2016-08-14 22 views
-2

在我的照片庫工作時,我決定最好有一個替代文件,如果圖像應該顯示不。我看過這個網站,也可能是其他人。他們都說使用:PHP file_exists不起作用。這似乎是逆轉真假

$VariableName = "photography/small/2014-09-21-red-1.png"; 
if (file_exists ($VariableName)) {echo "Yes!!!";} 
else {echo "Nooo!!!";} 

if (file_exists ("photography/small/2014-09-21-red-1.png")) {echo "Yes!!!";} 
else {echo "Nooo!!!";} 

出於某種原因,這不會爲我工作。它確實有效,但是隻有當file_exists設置爲!file_exists時,這就是說:「如果該文件不存在,則顯示存在的圖像(我想要的圖像,而不是它的替換)」。換句話說: 這是說如果apple存在,顯示「橙色」;如果不存在apple,則顯示apple

我甚至將生成的圖像鏈接放在搜索欄中(當使用!file_exists時),並按下Enter後,它將我帶到圖像。我已經確定圖像設置爲0777以防萬一,這似乎沒有效果。所有的$DataRows變量都連接到數據庫,並且我已經三重檢查了photography/small中的文件名與數據庫表中的文件名匹配。

這是怎麼發生的?

$URLPath = "http://localhost/~matthew/"; 
if (file_exists ($URLPath . "photography/small/" . $DataRows["DatePublished"] . "-" . $DataRows["FileName"] . "." . $DataRows["ImageExtension"])) { 
echo '<img src="' . $URLPath . "photography/small/" . $DataRows["DatePublished"] . "-" . $DataRows["FileName"] . "." . $DataRows["ImageExtension"] . '" alt="' . $DataRows["PhotoName"] . '">' . "\n"; 
} 
else { 
echo '<img src="' . $URLPath . 'img/no-image.png" alt="Image Not Here">' . "\n"; 
} 

非常感謝您的幫助。

+0

是〜mathew htdocs文件夾中的文件夾? – McStuffins

+0

任何具體的原因,爲什麼你通過HTTPing繞行到你自己的服務器來檢查文件的存在?也就是說,爲什麼'http:// localhost /〜matthew'而不是,例如'/ var/www/my-docroot'? – Boldewyn

+0

RTM http://php.net/manual/en/function.file-exists.php *「從PHP 5.0.0開始,這個函數也可以和一些URL包裝一起使用。參考支持的協議和包裝來確定哪些包裝支持stat()系列功能。「* –

回答

1

如果您更改

$URLPath = "http://localhost/~matthew/"; 

$ URLPath到

$URLPath = $_SERVER['DOCUMENT_ROOT'] . "/~matthew/"; 
+0

它返回'Library/WebServer/Documents /〜matthew /',這不會導致任何結果。 –

+0

奇數。我從不使用URL查詢來跳過ping。它是否使用is_file()而不是file_exists()來提供相同的結果?你確定你的分貝是好的嗎? – 2016-08-14 20:32:17

+0

我很積極的數據庫是好的。我也有一個使用數據庫的導航菜單和迷你導航菜單,並且它們沒有任何問題地顯示。 'is_file()'也返回false。 –

0

嘗試使用clearstatcache()並仔細檢查文件名和路徑。

+0

我確定所有鏈接都是正確的。 'clearstatcache'不起作用。 –

+0

我可以問你正在使用哪個PHP版本? – CraftyScoundrel

+0

我正在使用5.6.21。 –

1

它看起來像你正在檢查一個文件,但傳遞一個URL到函數中。由於URL不是服務器上的有效路徑,因此可能會返回false。我會建議使用文件的實際路徑,或者如果你必須使用一個網址看看這篇文章:How to check if a file exists from a url

+0

我會,但我爲每個條目使用數據庫循環。正如我在文章中所說的,我已經對文件夾和數據庫表中的文件名進行了三重檢查。全部正確。 –

0
會發生什麼

如果(file_exists($ VARIABLENAME或 「路徑至圖像」)){

這是胡言亂語。只要「圖像路徑」不爲空,操作數將評估爲(bool)true。

它應該是:

if (file_exists ($VariableName)) { 

看起來你應該使用

If(is_readable($variable)) { 

但看你以後的代碼,你不使用你原來所引用的結構。

file_exists()的工作原理與我在很多不同的環境下描述的一樣。

+0

'$ VariableName或「path-to-image」'被放在一起顯示你可以使用if(file_exists($ VariableName)'或'if(file_exists(「path-to-image」)'。修復它上面 –

+0

@symcbean我會對他們使用if(file_exists($ VariableName或「path-to-image」))做一個評論,但後來才意識到這是OP剛纔陳述的內容。代碼示例本來應該是更好的措辭,在問題發佈後,我仔細研究了幾次後閱讀它的含義,發佈了問題中的評論,但沒有回答,因此,現在是任何人的球類遊戲。我懷疑它是他們完全使用路徑的方式。他們的'$ VariableName =「path-to-imagepng」;'的例子很模糊,恕我直言。 –