2012-06-06 95 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;" />'; 
}