<?
$user_image = '../images/users/' . $userid . 'a.jpg';
if (file_exists($user_image))
{
echo '<img src="'.$user_image.'" alt="" />';
}
else
{
echo '<img src="../images/users/small.jpg" alt="" />';
}
?>
大家好,这段代码应该检查一个文件,如果它不起作用,则显示另一个。 由于某种原因,它始终显示占位符,即使它存在,也永远不会找到初始文件。 有什么东西显然不对吗? 谢谢你的阅读!
答案 0 :(得分:4)
PHP正在另一个目录中运行。试试echo getcwd();
答案 1 :(得分:4)
file_exists
不适用于相对路径。尝试这样的事情:
$user_image = $_SERVER{'DOCUMENT_ROOT'}.'/../images/users/' . $userid . 'a.jpg';
if (file_exists($user_image))
// blah blah
但是,正如Artefacto建议的那样,最好使用真实的路径:
$user_image = '/path/to/your/files/images/users/' . $userid . 'a.jpg';
它更容易维护,因为您可以在位于不同目录的不同PHP脚本上使用该代码,而无需更改任何内容。
答案 2 :(得分:2)
如果您的相对路径指向htdocs子目录之外,那么Web服务器将不会发送该图像
答案 3 :(得分:1)
<?
$user_image = '../images/users/' . $userid . '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="" />';
}
?>
答案 4 :(得分:0)
我的意思是我并不总是最聪明的PHP,但你的concat位置是否正确?因为现在,它不会解析为/images/users/userida.jpg吗?这真的是你想要的吗?
答案 5 :(得分:0)
我认为您应该检查realpath('../images/users/' . $userid . 'a.jpg')
返回的内容。我觉得它与相对路径