我在Linux服務器上的file_exists()
PHP函數有一個奇怪的問題。PHP file_exists()在某些文件上返回false
使用file_exists在編輯之前檢查圖像是否在服務器上,它有時會失敗,原因不明。文件路徑是絕對的,我已經通過ssh檢查了它們,它們在指定的路徑上是100%。
失敗file_exists()的圖像仍將顯示在瀏覽器中。代碼沒有什麼區別,一個基本的var_dump(file_exists('/home/user/path/image.jpg'));
將返回false。
文件權限/所有權在所有圖像和父目錄上完全相同。安全模式關閉。沒有PHP錯誤。我現在難倒了,不知道該找什麼。
下面是圖像如何在服務器上:
/home/user/public_html/images/location/1.jpg -- will work
/home/user/public_html/images/location2/1.jpg -- won't work
/home/user/public_html/images/location2/2.jpg -- will work
我有服務器的root訪問權限,如果任何人有任何想法,我會很樂意嘗試出來。
在此先感謝您的建議,請告訴我您是否需要額外信息。
編輯: 要回答以下評論中的問題。
- 是的圖像在那裏,它絕對不是緩存。
- 安全模式關閉(我已經在我的文章中提到過)。
- 路徑不是符號鏈接,而是直接鏈接到服務器上的文件位置。
- 鳳凰,它是一致的。工作文件將始終工作,反之亦然。名字是1.jpg,1.thumb.jpg等等,所以它對陌生人物或空間來說不是問題。
[[email protected] ~]# ls -l /home/user/public_html/images/Hawkhurst/
total 92
-rwxr-xr-x 1 user user 24501 Aug 11 2009 1.jpg
-rwxr-xr-x 1 user user 1672 Aug 11 2009 1.thumb.jpg
-rwxr-xr-x 1 user user 14983 Aug 11 2009 2.jpg
-rwxr-xr-x 1 user user 1370 Aug 11 2009 2.thumb.jpg
-rwxr-xr-x 1 user user 17238 Aug 11 2009 3.jpg
-rwxr-xr-x 1 user user 1453 Aug 11 2009 3.thumb.jpg
-rwxr-xr-x 1 user user 14168 Aug 11 2009 4.jpg
-rwxr-xr-x 1 user user 1464 Aug 11 2009 4.thumb.jpg
[[email protected] ~]#
我試圖與權限777和755這有什麼區別。例如在這個文件夾中,1和2可能工作,而3 & 4不要...
我跑了一個快速測試,看看apache/php的運行和他們沒有運行,但沒有解釋爲什麼有些圖像可以工作,有些則沒有完全相同的權限。
編輯2:問題解決了。不能相信它有多愚蠢,從數據庫中調用的一些文件名在最後有空格......製作原始腳本的人在保存之前沒有進行任何清理。
是文件居然有?您可能會因緩存而看到圖片。 – 2011-01-08 16:17:02
您是否啓用了safe_mode? – Mchl 2011-01-08 16:20:38