PHP Conference Japan 2024

is_readable

(PHP 4, PHP 5, PHP 7, PHP 8)

is_readable判斷檔案是否存在且可讀取

說明

is_readable(字串 $filename): 布林值

判斷檔案是否存在且可讀取。

參數

filename

檔案路徑。

返回值

如果由 filename 指定的檔案或目錄存在且可讀取,則返回 true,否則返回 false

錯誤/例外

失敗時,會發出 E_WARNING

範例

範例 #1 is_readable() 範例

<?php
$filename
= 'test.txt';
if (
is_readable($filename)) {
echo
'檔案可讀取';
} else {
echo
'檔案不可讀取';
}
?>

注意事項

請記住,PHP 可能會以網頁伺服器執行的身分使用者 ID(通常為 'nobody')來存取檔案。

注意此函式的結果會被快取。詳情請參閱 clearstatcache()

提示

從 PHP 5.0.0 開始,此函式也可以與某些 URL 包覆器一起使用。請參考 支援的協定和包覆器 以確定哪些包覆器支援 stat() 系列函式。

注意事項:

檢查是使用真實的 UID/GID 而不是有效的 UID/GID 進行的。

此函式對於目錄可能返回 true。使用 is_dir() 來區分檔案和目錄。

另請參閱

新增註記

使用者貢獻的註記 3 則註記

jo at durchholz dot org
18 年前
DrTebi at yahoo dot com 錯了。is_readable() 檢查您是否可以執行 file_get_contents() 或類似的呼叫,不多也不少。如果指定的位置返回 500 或 403 錯誤,您仍然可以 read() 該位置(您只會收到錯誤頁面),但它仍然是可讀取的。使用 is_readable 來檢查 URL 的有效性根本就是用錯函式。
pgl at yoyo dot org
15 年前
請注意,is_readable() 對於串流(例如,php://stdin)將返回 false。
arikan134 at gmail dot com
8 年前
is_readable 會遞迴檢查。檢查所有子目錄和檔案是否可讀取
<?php
函式 is_readable_r($dir) {
if (
is_dir($dir)) {
if(
is_readable($dir)){
$objects = scandir($dir);
foreach (
$objects as $object) {
if (
$object != "." && $object != "..") {
if (!
is_readable_r($dir."/".$object)) return false;
else continue;
}
}
return
true;
}else{
return
false;
}

}else if(
file_exists($dir)){
return (
is_readable($dir));

}
}

?>
To Top