$filename = '/path/to/foo.txt';
if (file_exists($filename)) {
echo "The file $filename exists";
} else {
echo "The file $filename does not exist";
}
// 目錄檢查同樣適用
if (file_exists("C:\blabla\php")) echo "yes"; else echo "no";
function file_mode_info($file_path) {
if (!file_exists($file_path)) return false;
$mark = 0;
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$test_file = $file_path . '/cf_test.txt';
if (is_dir($file_path)) {
// 目錄可讀
$dir = @opendir($file_path);
if ($dir === false) return $mark;
if (@readdir($dir) !== false) $mark ^= 1; // 可讀
@closedir($dir);
// 目錄可寫
$fp = @fopen($test_file, 'wb');
if ($fp === false) return $mark;
if (@fwrite($fp, 'directory access testing.') !== false) $mark ^= 2; // 可寫
@fclose($fp); @unlink($test_file);
// 目錄可修改
$fp = @fopen($test_file, 'ab+');
if ($fp && @fwrite($fp, "modify test\r\n") !== false) $mark ^= 4;
@fclose($fp);
// rename 權限
if (@rename($test_file, $test_file) !== false) $mark ^= 8;
@unlink($test_file);
} elseif (is_file($file_path)) {
// 文件可讀
$fp = @fopen($file_path, 'rb');
if ($fp) { $mark ^= 1; @fclose($fp); }
// 文件可寫/可修改
$fp = @fopen($file_path, 'ab+');
if ($fp && @fwrite($fp, '') !== false) $mark ^= 6;
@fclose($fp);
// rename 權限
if (@rename($test_file, $test_file) !== false) $mark ^= 8;
}
} else {
if (@is_readable($file_path)) $mark ^= 1;
if (@is_writable($file_path)) $mark ^= 14; // 寫+修改+rename
}
return $mark; // 位掩碼:1讀 2寫 4改 8rename
}
| 二進制位 | 權限 |
|---|---|
| bit 0 (1) | 可讀 |
| bit 1 (2) | 可寫/可追加 |
| bit 2 (4) | 可修改 |
| bit 3 (8) | 可執行 rename |
如返回 7 (0111) 表示可讀、可寫、可修改;15 (1111) 表示全權限。
function writeXmlFile($xmlData) {
$path = dirname(__FILE__);
$path = substr_replace($path, "", stripos($path, "actions\data"));
$path .= "xmlFiles\\";
if (!is_dir($path)) mkdir($path);
$filePathAndName = $path . time() . ".xml";
$fp = fopen($filePathAndName, "w");
if (!$fp) return false;
$flag = fwrite($fp, $xmlData);
fclose($fp);
return $flag ? $filePathAndName : false;
}