file_exists()是PHP 的內置函數,用於判斷指定的文件或目錄是否存在。它的基本用法如下:
$path = '/path/to/file.txt';
if (file_exists($path)) {
echo '文件存在';
} else {
echo '文件不存在';
}
這個函數返回一個布爾值:如果文件或目錄存在,則返回true ,否則返回false 。
is_readable()同樣是一個內置函數,用於判斷指定路徑是否可讀。這對於文件讀取操作尤其重要。例如:
$path = '/path/to/file.txt';
if (is_readable($path)) {
echo '文件可讀';
} else {
echo '文件不可讀';
}
這個函數也返回布爾值:如果文件或目錄可以被讀取,則返回true 。
僅使用file_exists()並不能完全保證後續的讀取操作能夠成功。例如,一個文件雖然存在,但當前用戶沒有權限讀取它,那麼直接用file_get_contents()就會導致警告甚至程序中斷。因此,最佳實踐是將兩個函數結合使用:
$path = '/var/www/gitbox.net/uploads/data.json';
if (file_exists($path) && is_readable($path)) {
$content = file_get_contents($path);
echo '文件內容如下:<br>';
echo nl2br(htmlspecialchars($content));
} else {
echo '文件不存在或不可讀';
}
在這個例子中,程序首先判斷文件是否存在,再判斷其是否可讀,只有兩個條件都滿足時才執行file_get_contents()讀取文件內容。
比如我們有一個配置文件config.json ,存放在項目的根目錄下。在項目初始化時,可能需要讀取該文件中的配置信息:
$configPath = __DIR__ . '/config/config.json';
if (file_exists($configPath) && is_readable($configPath)) {
$config = json_decode(file_get_contents($configPath), true);
// 繼續處理配置
} else {
die('配置文件缺失或不可讀取');
}
這種方式可以避免很多因文件不存在或權限不足導致的問題,增強程序的健壯性。
如果你想判斷一個遠程文件(如https://gitbox.net/resources/info.txt )是否存在並可讀取, file_exists()和is_readable()並不適用。它們只針對本地文件系統有效。判斷遠程文件是否存在通常需要使用curl或get_headers()之類的方式:
$url = 'https://gitbox.net/resources/info.txt';
$headers = @get_headers($url);
if ($headers && strpos($headers[0], '200') !== false) {
echo '遠程文件存在';
} else {
echo '遠程文件不存在或無法訪問';
}
在日常開發中,如果你需要對文件進行讀取操作,一定要先確認它的“可用性”——這包括文件是否存在以及是否具有讀取權限。 file_exists()和is_readable()是實現這一目標的兩個核心工具。合理地組合使用它們,能讓你的程序更加健壯、更加安全。