2016-01-22 64 views
2

當我使用以下PHP代碼時;PHP file_exists else

<?php if (file_exists("/foto/Maurice.jpg")) 
{ 
echo "<center><img src='/foto/Maurice.jpg'/></center>"; 
} 
else { 
echo "<center><img src='/afbeeldingen/kaars1.png'/></center>"; 
?> 

我的瀏覽器總是顯示kaars1.png 而不是Maurice.jpg 我也試過!file_exists但當時它並不顯示kaars1.png,當Maurice.jpg不存在。 有沒有解決這個問題的方法?

+2

'file_exists'是*僅*爲您的服務器的(本地)文件系統中的文件。 –

+2

可能的重複[如何檢查一個遠程文件是否存在使用PHP?](http://stackoverflow.com/questions/981954/how-can-one-check-to-see-if-a-remote -file-exists-using-php) –

+0

給出'file_exist'中的完整路徑。(你的映像存在的完整路徑) –

回答

3

這是一個回答你的第二個問題

正確的解決方案取決於你的實際的目錄結構和腳本的位置文件關於您正在尋找的實際文件夾和文件,但要開始找到解決方案/"/foto/Maurice.jpg"說回到根目錄並尋找一個直接RY稱爲/foto

所以,如果這個文件夾是您的DocumentRoot下嘗試使用

if (file_exists("foto/Maurice.jpg")) 
4

file_exists僅適用於服務器(本地)文件系統上的文件。您需要真正嘗試請求URL並查看它是否存在。

您可以使用cURL來做到這一點。

$handle = curl_init('https://picathartes.com/foto/Maurice.jpg'); 
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($handle, CURLOPT_NOBODY, TRUE); 
$response = curl_exec($handle); 

// Check for 404 (file not found). 
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); 
if($httpCode == 404) { 
    echo "<center><img src='https://picathartes.com/afbeeldingen/kaars1.png'/></center>"; 
} 
else{ 
    echo "<center><img src='https://picathartes.com/foto/Maurice.jpg'/></center>"; 
} 
curl_close($handle); 

(代碼來自這個問題:https://stackoverflow.com/a/408416

+1

這可能會更好,不包括實際的響應體(curl_setopt($ handle,CURLOPT_NOBODY,1) – georaldc

+0

@georaldc:可能,我大多是從另一個問題「借用」代碼,只是在沒有body的情況下獲得頭文件似乎是一個好主意。 –

+0

它是一個很好的答案,但是是什麼讓你認爲被查找的文件在另一臺服務器上呢? – RiggsFolly