$var = "http://site.com/image.png";
if (file_exists($var))
echo 'yes';
else
echo 'no';
爲什麼此腳本始終返回false
?file_exists始終爲false
$var = "http://site.com/image.png";
if (file_exists($var))
echo 'yes';
else
echo 'no';
爲什麼此腳本始終返回false
?file_exists始終爲false
因爲這是而不是實際上是一個文件,而不是它的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']
轉換它,或者找到另一種方法在文件系統上找到它。
$var
變量應該描述系統上的路徑,而不是URL。例如
$var = "/var/www/html/image.png";
那麼很可能您的服務器不允許PHP內部的外部連接。
你可以通過打開一個本地文件來檢查它是否有效。如果是這樣,你的代碼是正確的。
確保allow_url_fopen
設置爲ON。
沒關係,我跳到了結論。 @paxdiablo有正確的答案。 – berkes 2011-02-03 08:17:29
如果你想查詢的遠程文件的存在(實際上是「資源」),然後使用:
$i = get_headers($url);
$ok = strpos($i[0], "200");
並檢查HTTP狀態代碼。
因爲你正在尋找一個URL,而不是你的計算機(或網絡服務器)上的物理路徑 – Phill 2011-02-03 08:14:26