-2

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

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

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

在这种情况下,图像永远不会显示。

但是,如果我省略了 if 语句......

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

文件存在时图像正确显示,但不存在时图像显示为空框。我想消除那个空框架。

我错过了什么?

4

3 回答 3

3

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

例如

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

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

于 2013-01-23T16:39:51.280 回答
0

在使用文件和目录路径时,您必须牢记一些事情。基本上,访问绝对文件(网络服务器上的完整路径)比访问相对文件(执行 php-script 的目录的路径)更好。这将帮助您检查文件是否存在。您可以使用 PHP 魔术常量DIR (PHP 版本 >= 5.3) 或 dirname( FILE ) 获取脚本的活动目录。

您必须跟踪的另一件事是您的网络服务器文档根目录。您的(在您的情况下)图像文件的地址如下: document-root: /var/www/example.com/img/photo.png url: http://example.com/img/photo.png

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

于 2013-01-23T16:57:46.613 回答
0

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

如果你不想使用绝对路径..你可以使用下面的相对路径。

$_SERVER['DOCUMENT_ROOT'] = '<root_dir_of_your_project>';  
file_exists($_SERVER['DOCUMENT_ROOT'].'/path/to/file.php');  
于 2013-01-23T16:42:30.103 回答