在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;
}
