PHP file_exists

时间:2013-01-23 16:38:04

标签: php image file-exists

这应该很简单,但不起作用

  $photo = "../members/".$vid.".jpg";

  if (file_exists ($photo))
       echo "<img id='memberpic' src = '$photo'/>";

在这种情况下,图像从不显示。

但是,如果我遗漏if语句......

 echo "<img id='memberpic' src = '$photo'/>";

当文件存在时,图像会正确显示,但如果文件不存在,则会显示空白帧。我想消除那个空框架。

我错过了什么?

3 个答案:

答案 0 :(得分:3)

您正在使用file_exists()的相对路径。请尝试使用完整的服务器路径。

e.g。

$photo = "/var/www/html/members/".$vid.".jpg";

但显然要替换服务器的完整路径:)

答案 1 :(得分:0)

在处理文件和目录路径时,您必须记住一些事项。基本上,最好是访问文件绝对(网络服务器上的完整路径)而不是相对(从执行php脚本的目录的路径)。这将帮助您检查文件是否存在。您可以使用PHP魔术常量 DIR (PHP版本&gt; = 5.3)或dirname(文件)获取脚本的活动目录。

您需要跟踪的另一件事是您的网络服务器文档根。您的(在您的情况下)图像文件的寻址方式如下: document-root:/var/www/example.com/img/photo.png 网址:http://example.com/img/photo.png

虽然可以使用“父目录”...我不建议使用,因为它很难。

答案 2 :(得分:-1)

尽可能多地使用绝对路径。相对路径是PHP计算它们的难点(在性能方面)。

如果你不想使用绝对路径......你可以使用相对路径跟随。

$_SERVER['DOCUMENT_ROOT'] = '<root_dir_of_your_project>';  
file_exists($_SERVER['DOCUMENT_ROOT'].'/path/to/file.php');