在PHP中,可用is_writable()函數來判斷一個 文件/目錄 是否可寫,詳情以下:php
參考web
is_writable安全
(PHP 4, PHP 5)服務器
is_writable — 判斷給定的文件名是否可寫ide
說明函數
bool is_writable ( string $filename )spa
若是文件存在而且可寫則返回 TRUE。($filename 參數能夠是一個目錄名,即檢查目錄是否可寫。 )操作系統
記住 PHP 也許只能以運行 webserver 的用戶名(一般爲 ‘nobody’)來訪問文件。不計入安全模式的限制。.net
- <?php
- 2 $filename = 'test.txt';
- 3 if (is_writable($filename)) {
- 4 echo 'The file is writable';
- 5 } else {
- 6 echo 'The file is not writable';
- 7 }
- 8 ?>
Example #1 is_writable() 例子server
注意:is_writeable() 是 is_writable() 的別名!
+++++++++++++++++++++++++++++++++++++++++++++++++
可是,上面那個函數在PHP4中是有BUG的,尤爲是在Windows服務器下判斷不許,官方相關bug報告連接以下:
http://bugs.php.net/bug.php?id=27609
爲了兼容各個操做系統,可自定義一個判斷可寫函數,代碼以下:
- /**
- 02 * 判斷 文件/目錄 是否可寫(取代系統自帶的 is_writeable 函數)
- 03 *
- 04 * @param string $file 文件/目錄
- 05 * @return boolean
- 06 */
- 07 function new_is_writeable($file){
- 08 if (is_dir($file)){
- 09 $dir = $file;
- 10 if ($fp = @fopen("$dir/test.txt", 'w')) {
- 11 @fclose($fp);
- 12 @unlink("$dir/test.txt");
- 13 $writeable = 1;
- 14 } else {
- 15 $writeable = 0;
- 16 }
- 17 } else {
- 18 if ($fp = @fopen($file, 'a+')) {
- 19 @fclose($fp);
- 20 $writeable = 1;
- 21 } else {
- 22 $writeable = 0;
- 23 }
- 24 }
- 25
- 26 return $writeable;
- 27 }