2011-02-03 72 views
0
$var = "http://site.com/image.png"; 

if (file_exists($var)) 
    echo 'yes'; 
else 
    echo 'no'; 

爲什麼此腳本始終返回falsefile_exists始終爲false

+1

因爲你正在尋找一個URL,而不是你的計算機(或網絡服務器)上的物理路徑 – Phill 2011-02-03 08:14:26

回答

10

因爲這是而不是實際上是一個文件,而不是它的URL。

直到PHP5,file_exists函數的目的是檢測文件或目錄是否存在。

在PHP5,支持來允許某些URL wrapper支持,按照說明上this page

提示:作爲PHP 5.0.0,這個功能也可以使用一些URL封裝器。請參閱支持的協議和包裝以確定哪些包裝支持stat()系列功能。

的包裝有詳細here但不幸的是,the http one does not support stat,一個先決條件,允許file_exists工作。

如果您在服務器上運行,可以使用$_SERVER['DOCUMENT_ROOT']轉換它,或者找到另一種方法在文件系統上找到它。

0

$var變量應該描述系統上的路徑,而不是URL。例如

$var = "/var/www/html/image.png"; 
0

那麼很可能您的服務器不允許PHP內部的外部連接。

你可以通過打開一個本地文件來檢查它是否有效。如果是這樣,你的代碼是正確的。

確保allow_url_fopen設置爲ON。

+0

沒關係,我跳到了結論。 @paxdiablo有正確的答案。 – berkes 2011-02-03 08:17:29

1

如果你想查詢的遠程文件的存在(實際上是「資源」),然後使用:

$i = get_headers($url); 
$ok = strpos($i[0], "200"); 

並檢查HTTP狀態代碼。

相關問題