这段代码之前已经有效,但是我把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 [&#39; id&#39;]变量确实存在,并且正在脚本中的其他地方使用。
任何想法是什么问题?
由于
答案 0 :(得分:5)
好吧,让我们简单一点:
您的图像位于
/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/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)