2012-06-06 92 views
2

我正在嘗試將個人資料照片顯示在我正在處理的網站上的評論列表中。如果他們沒有個人資料照片,我將顯示一個標準圖片,但不幸的是,即使圖片存在,圖片也會始終顯示在標準圖片上,而不是個人資料。下面是代碼:PHP file_exists無法正常工作

$reviewerPic = 'http://www.[URL].co.uk/images/members/' . $reviewPosterId . '/profilePic.jpg'; 
$default_pic = 'http://www.[URL].co.uk/images/background.jpg'; 
    if(file_exists($reviewerPic)){ 
     $reviewer_pic = '<img src="' . $reviewerPic . '" width="100px" style="float: left; margin: 20px;" />'; 
    }else { 
     $reviewer_pic = '<img src="' . $default_pic . '" width="100px" style="float: left; margin: 20px;" />'; 
} 

漂亮的通用代碼,但它似乎並不奏效!它只是不斷顯示背景圖片...

爲什麼file_exists不工作的任何想法?

+1

看看這個問題:http://stackoverflow.com/questions/1722613/check-if-a-remote-page-exists-using-php - 它幾乎做你需要的東西。 –

回答

14

您正在使用,file_exists功能,使用物理路徑,您需要提供的參數應該是你應該有類似

/home/var/www/images/ 

,而不是

http://www.[URL].co.uk/images/ 
所在的文件可以發現,服務器上的地址,而不是URL

所以你需要檢查,如果該文件在服務器上存在本地之後,你可以使用一個網址,使其向公衆提供(在IMG SRC)

您可以在手冊頁,這一功能上見只有一些 URL封裝工作,所以最好使用路徑,而不是網址(我想這取決於允許URL的fopen設置)

+0

啊,你是一個天才男人,就像php包含文件一樣......我不相信我甚至沒有嘗試過。非常感謝!! – JackWillDavis

+0

@JackWillDavis歡迎您,我很高興它幫助 – mishu

+0

另一個棘手的時刻 - 你可以使用'file_exists('./ images/filename.jpg');'PHP知道web根文件夾是通過'。/',這個如果是這樣的話,你會感到很舒服:U可以爲Web服務器設置一個新的目錄,然後'/ home/var/www/images /'可能不是你需要的解決方案。 –

1

File_exists使用/ home/www/username/public_html /格式。你可能想從你的主機中檢索這個。

所以這將是類似/home/www/jack/public_html/[URL].co.uk/profilepic/id/profilePic.jpg

順便說一句,您的echo '<img src=...不需要使用.。您可以使用變量的字符串裏,你應該只使用.當你需要使用一個函數或東西來修改它,就像"string0".function($str....)."string1";

0

file_exists PHP功能只適用於物理文件,如/var/www/file.extC:\WWW\File.ext而不是HTTP文件。它甚至不知道如何處理HTTP文件。

在這種情況下,如果您想知道文件是否存在,因爲它將成爲HTTP響應,您可以嘗試使用curl,如果它以404作爲響應,則未找到該文件。

欲瞭解更多信息,請瀏覽:http://php.net/manual/en/function.file-exists.phphttp://php.net/manual/en/book.curl.php

2

file_exists不與HTTP工作,

使用:$_SERVER["DOCUMENT_ROOT"]訪問根在你的主機

所以

$reviewerPic = $_SERVER["DOCUMENT_ROOT"].'/images/members/' . $reviewPosterId . '/profilePic.jpg'; 
$default_pic = $_SERVER["DOCUMENT_ROOT"].'/images/background.jpg'; 
+0

或'$ _SERVER ['CONTEXT_DOCUMENT_ROOT']',即使您的別名不在您的文檔根目錄下。 – Stefan

1

根據的PHP手冊10個並不是所有的協議支持功能:

這個功能也可以與一些 URL封裝中使用。請參閱 Supported Protocols and Wrappers以確定哪些包裝程序支持 stat()系列功能。

HTTP wrapper支持stat:

支持stat()否

0

file_exists不支持遠程URL。

你可以試試這個:

if (fopen($reviewerPic, "r")) 
    echo "File exists!"; 
0

儘量簡單。

$reviewerPic = 'http://www.[URL].co.uk/images/members/' . $reviewPosterId . '/profilePic.jpg'; 
$default_pic = 'http://www.[URL].co.uk/images/background.jpg'; 
    if($fileopen = @fopen($reviewerPic)){ 
     $reviewer_pic = '<img src="' . $reviewerPic . '" width="100px" style="float: left; margin: 20px;" />'; 
     fclose($fileopen); 
    }else { 
     $reviewer_pic = '<img src="' . $default_pic . '" width="100px" style="float: left; margin: 20px;" />'; 
}