2015-10-27 366 views
1

這個問題是關於使用fopen來檢查文件是否存在,而不是cURLgetimagesize哪些是替代方法,但不是我所問的。PHP:檢查圖像文件是否存在使用fopen

我一直在代碼中使用以下函數幾年沒有問題,它突然總是返回FALSE,即使在有效的圖像。我不知道我是否意外地創建了一個錯字,或者我的主機是否更改了PHP的版本或者可能導致了錯誤的原因,但是如果有人能夠發現可能會出錯的錯誤,將不勝感激。

這裏是代碼:

function image_exist($url) { 
      if (@fclose(@fopen($url, "r "))) { 
      // true; 
return TRUE; 
      } else { 
      // false; 
return FALSE; 
      } 
    } 

這是現在即使在有效圖像返回FALSE

+6

停止使用'@'。它的編碼等同於將你的手指塞進你的耳朵,然後「拉拉拉拉聽不到你」。它還隱藏了PHP可能試圖告訴你什麼是問題的任何消息。另外,像這樣的鏈接調用只是糟糕的編程。如果fopen失敗,它將返回布爾值false,然後嘗試更頻繁地導致進一步的錯誤。永遠不會假設成功與外部資源。 –

+0

我會如何解開它?幾年前寫了這段代碼,坦率地說在php上生鏽了。 – user1904273

+2

你必須重寫它。相反,嘗試使用Google搜索。 http://www.stackoverflow.com/questions/14806159/how-do-i-test-if-an-遠程圖像文件存在於PHP http://stackoverflow.com/questions/10489210/check-if-remote-images-exist-php http://stackoverflow.com/questions/981954/how- can-one-check-to-see-if-a-remote-file-exists-using-php 正如你所看到的,這真的是一個重複的主題。這已經被很多次回答了。 –

回答

2

爲什麼使用fopen()fclose()爲此目的有a function

function image_exist($url) { 
    return file_exists($url); 
} 

編輯︰你是正確的,這對HTTP(S)的遠程文件不起作用。

+0

然而,如果這能夠奏效的話,那真是太棒了,但是當我嘗試它時,它迴歸爲空。這似乎有混合的結果,它需要啓用allow_url_fopen。 http://stackoverflow.com/questions/7991425/php-how-to-check-if-image-file-exists我懷疑我的主機已關閉url_open,因爲我不能再使用它或這個建議。我正在嘗試與主持人聊天,但一直很忙碌。 – user1904273

+0

這是正確的。另外,使用fopen/fclose方法在我的環境中進行測試,因此您可能正在通過託管限制查找正確的方向。 – miken32