PHP file_exists不起作用

Jac*_*vis 2 php

我正在尝试将个人资料照片显示在我正在处理的网站上的评论列表中.如果他们没有个人资料照片,我会有一个标准的图像来显示,不幸的是,即使它存在,图像也总是转到标准图像而不是个人资料.下面是代码:

$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;" />';
}
Run Code Online (Sandbox Code Playgroud)

非常通用的代码,但它似乎不起作用!它只是不断显示背景图像......

关于为什么file_exists不起作用的任何想法?

mis*_*shu 16

您正在使用的函数file_exists使用物理路径,您需要提供的参数应该是可以找到文件的服务器上的地址,而不是网址

你应该有类似的东西

/home/var/www/images/
Run Code Online (Sandbox Code Playgroud)

代替

http://www.[URL].co.uk/images/
Run Code Online (Sandbox Code Playgroud)

因此,您需要检查本地服务器上是否存在该文件,然后您可以使用URL将其提供给公众(在img src中)

您可以在手册页上看到此函数仅适用于某些 URL包装器,因此最好使用路径而不是URL(我猜这取决于允许url fopen设置)

  • 另一个棘手的时刻 - 你可以使用 `file_exists('./images/filename.jpg');` PHP 通过 `./` 知道 web 根文件夹在哪里,如果例如:你可以设置一个新目录,这会很舒服对于要使用的 Web 服务器,那么 `/home/var/www/images/` 可能不是您需要的解决方案。 (2认同)

Ael*_*ios 5

file_exists 不适用于 HTTP,

使用 :$_SERVER["DOCUMENT_ROOT"]访问主机中的 root

所以

$reviewerPic = $_SERVER["DOCUMENT_ROOT"].'/images/members/' . $reviewPosterId .  '/profilePic.jpg';
$default_pic = $_SERVER["DOCUMENT_ROOT"].'/images/background.jpg';
Run Code Online (Sandbox Code Playgroud)