文件存在测试总是失败
<?
$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="" />';
}
?>
大家好,这段代码应该检查一个文件,如果它不起作用,显示另一个。 由于某些原因,它始终显示占位符,即使它在那里也不会找到初始文件。 这里有什么显然不对吗? 感谢您的阅读!文件存在测试总是失败
<?
$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="" />';
}
?>
干杯芽,这个工程。 – sark9012 2010-07-14 15:21:05
PHP运行在不同的目录中。尝试echo getcwd();
如果htdocs目录的子目录地区以外的相对路径点,则图像将不会被通过服务器
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脚本中使用的代码目录而不必改变任何东西。
http://www.php.net/manual/en/function.file-exists.php#93572 – DeaconDesperado 2010-07-14 15:11:19
谢谢...我正在添加该示例。 – Cristian 2010-07-14 15:11:58
为什么不'realpath'? – Artefacto 2010-07-14 15:13:49
我的意思是我并不总是最聪明的用PHP,但是你的concat位置是否正确?因为现在,它不会解析为/images/users/userida.jpg吗?这真的是你想要的吗?
驳斥它,它会解析为:'../ images/users/123a.jpg'如果$ userid是'123' – 2010-07-14 15:16:50
没错,那正是我所说的。只是忘了.. – cwill747 2010-07-14 15:22:56
这就是他想要的。 – 2010-07-14 15:52:26
我想你应该检查看看realpath('../images/users/' . $userid . 'a.jpg')
返回什么。我觉得它与相对路径有关
您是否尝试过使用根用户目录而不是相对路径的路径? – DeaconDesperado 2010-07-14 15:10:10
当前工作目录可能不是你所期望的,realpath('../ images/users /')给你什么,或者getcwd()的输出? – Wrikken 2010-07-14 15:10:33
你检查过$ user_images的值了吗?例如echo($ user_image) – macleojw 2010-07-14 15:12:14