这应该很简单,但不起作用
$photo = "../members/".$vid.".jpg";
if (file_exists ($photo))
echo "<img id='memberpic' src = '$photo'/>";
在这种情况下,图像从不显示。
但是,如果我遗漏if语句......
echo "<img id='memberpic' src = '$photo'/>";
当文件存在时,图像会正确显示,但如果文件不存在,则会显示空白帧。我想消除那个空框架。
我错过了什么?
答案 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');