在PHP中,可用is_writable()函數來判斷一個 文件/目錄 是否可寫,詳情如下:
參考
is_writable
(PHP 4, PHP 5)
is_writable — 判斷給定的文件名是否可寫
說明
bool is_writable ( string $filename )
如果文件存在並且可寫則返回 TRUE。($filename 參數可以是一個目錄名,即檢查目錄是否可寫。 )
記住 PHP 也許只能以運行 webserver 的用戶名(通常為 'nobody')來訪問文件。不計入安全模式的限制。
Example #1 is_writable() 例子
<?php $filename = 'test.txt'; if (is_writable($filename)) { echo 'The file is writable'; } else { echo 'The file is not writable'; } ?>
注意:is_writeable() 是 is_writable() 的別名!
但是,上面那個函數在PHP4中是有BUG的,尤其是在Windows服務器下判斷不准,官方相關bug報告鏈接如下:
http://bugs.php.net/bug.php?id=27609
為了兼容各個操作系統,可自定義一個判斷可寫函數,代碼如下:
/** * 判斷 文件/目錄 是否可寫(取代系統自帶的 is_writeable 函數) * * @param string $file 文件/目錄 * @return boolean */ function new_is_writeable($file) { if (is_dir($file)){ $dir = $file; if ($fp = @fopen("$dir/test.txt", 'w')) { @fclose($fp); @unlink("$dir/test.txt"); $writeable = 1; } else { $writeable = 0; } } else { if ($fp = @fopen($file, 'a+')) { @fclose($fp); $writeable = 1; } else { $writeable = 0; } } return $writeable; }