[英]Syntax problem when checking for a file
这段代码以前可以运行,但是我将C&P放到了一个新的地方,由于某种原因,现在不起作用了!
<?
$user_image = '/images/users/' . $_SESSION['id'] . 'a.jpg';
if (file_exists(realpath(dirname(__FILE__) . $user_image)))
{
echo '<img src="'.$user_image.'" alt="" />';
}
else
{
echo '<img src="/images/users/small.jpg" alt="" />';
}
?>
如您所见,我正在检查文件(如果存在),显示该文件,如果不存在,则显示一个占位符。
$ _SESSION ['id']变量确实存在,并且正在脚本中的其他地方使用。
任何想法是什么问题?
谢谢
好吧,简单点说:
您的图片在
/foo/bar/images/users/*.jpg
你的剧本在
/foo/bar/script.php
之前,这有效,因为realpath(dirname(__FILE__) . $user_image)
创建
/foo/bar/image/users/*.jpg
但是现在,当您将脚本移动到同一级别的另一个目录( /foo/baz/script.php
)时,上/foo/baz/script.php
命令的输出将为
/foo/baz/image/users/*.jpg
并且此路径不存在。
您在评论中说,您已将脚本移至另一个目录。 如果您也没有移动图像,则脚本肯定会失败。
另请注意,通过URL(即从外部)或通过文件路径(即从内部)访问图像存在差异。 您的图像始终可以通过www.yourdomain.com/images/users
,但是如果将PHP脚本移至另一个目录,则dirname(__FILE__)
必须提供另一个值,因此测试将失败 :
foo/
|
- baz/
| |
| - script.php <-absolut path: /foo/baz/images/users/...
|
- bar/ <- entry point of URL is always here
|
- script.php <- absolut path: /foo/bar/images/users/...
- images/
|
- users/
|
- *.jpg
更新:
如果您的脚本在图像下方一级 ,则可能是以下解决方法:
file_exists(realpath(dirname(__FILE__) . '/../' . $_SESSION['id'] . 'a.jpg'))
这将生成类似/foo/images/users/v3/../12a.jpg
。 ..
表示要提高水平。
或者上升几个级别并使用$user_image
:
realpath(dirname(__FILE__) . '/../../..' . $user_image)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.