2009-11-13 304 views
9

是否有方法檢查文件(具有絕對路徑還是相對路徑)是否存在?我使用PHP。我發現了一些方法,但他們只接受絕對或相對的,但不是兩者。謝謝。檢查是否存在具有絕對路徑和相對路徑的文件

+0

我忘了說這是什麼邏輯,如果一個文件不存在於從遠程URL的文檔根目錄中替代。我想生病嘗試羅布的答案。謝謝大家 – uji 2009-11-13 17:16:13

回答

25

file_exists($file);的伎倆適用於相對路徑和絕對路徑。

更有用的是,有絕對路徑沒有硬編碼它。最好的方法是使用dirname(__FILE__),它以windows格式的ether unix獲取當前文件的目錄完整路徑。然後,我們使用realpath(),如果文件不存在,則返回false。所有你需要做的就是指定從該文件的目錄的相對路徑,並把它放在一起:

$path = dirname(__FILE__) . '/include.php'; 
if (realpath($path)) { 
    include($path); 
} 
+0

realpath()返回規範路徑,所以消除符號鏈接。有沒有辦法避免這一點,並檢查路徑是絕對的,即使不是規範? – Pierre 2011-10-26 12:46:37

+0

良好的教學技能 – unkown 2012-07-12 05:53:10

3

file_exists($path)將檢查絕對路徑或相對於腳本位置。如果您要檢查相對於文檔根目錄,你可以嘗試file_exists("{$_SERVER['DOCUMENT_ROOT']}path");

如果你想將採取相對和絕對路徑,這樣的事情應該工作(未經測試)功能:

function check_file($path) { 
    return (file_exists($path) || file_exists("{$_SERVER['DOCUMENT_ROOT']}path")); 
} 
4

您可以使用realpath來檢查文件是否存在給定的路徑檢索擴展路徑,文件:

$absPath = realpath($path); 
if ($absPath === false) { 
    // invalid path 
}