我在file_exists()
Linux 服务器上的 PHP 函数有一个奇怪的问题。
在编辑之前使用 file_exists 检查图像是否在服务器上时,有时会无缘无故地失败。文件路径是绝对的,我已经通过 ssh 检查了它们,它们在指定路径上是 100%。
失败 file_exists() 的图像仍将显示在浏览器中。代码没有区别,基本var_dump(file_exists('/home/user/path/image.jpg'));
将返回false。
所有图像和父目录的文件权限/所有权完全相同。安全模式已关闭。没有 PHP 错误。我现在很困惑,不知道要寻找什么。
以下是图像在服务器上的方式:
/home/user/public_html/images/location/1.jpg -- will work
/home/user/public_html/images/location2/1.jpg -- won't work
/home/user/public_html/images/location2/2.jpg -- will work
我对服务器有 root 访问权限,所以如果有人有任何想法,我会很乐意尝试一下。
提前感谢您的建议,如果您需要更多信息,请告诉我。
编辑: 回答下面评论中的问题。
- 是的,图像在那里,它绝对不是缓存。
- 安全模式已关闭(我已经在我的帖子中提到了这一点)。
- 路径不是符号链接,而是指向服务器上文件位置的直接链接。
- 凤凰,是一贯的。工作文件将始终有效,反之亦然。名称是 1.jpg、1.thumb.jpg 等,所以奇怪的字符或空格不是问题。
[root@server ~]# ls -l /home/user/public_html/images/Hawkhurst/
total 92
-rwxr-xr-x 1 user user 24501 Aug 11 2009 1.jpg
-rwxr-xr-x 1 user user 1672 Aug 11 2009 1.thumb.jpg
-rwxr-xr-x 1 user user 14983 Aug 11 2009 2.jpg
-rwxr-xr-x 1 user user 1370 Aug 11 2009 2.thumb.jpg
-rwxr-xr-x 1 user user 17238 Aug 11 2009 3.jpg
-rwxr-xr-x 1 user user 1453 Aug 11 2009 3.thumb.jpg
-rwxr-xr-x 1 user user 14168 Aug 11 2009 4.jpg
-rwxr-xr-x 1 user user 1464 Aug 11 2009 4.thumb.jpg
[root@server ~]#
我已经尝试过使用权限 777 和 755 没有区别。例如在这个文件夹中,1 和 2 可能工作,而 3 和 4 不...
我运行了一个快速测试以查看 apache/php 的运行方式,并且它们确实以无人身份运行,但这并不能解释为什么有些图像可以工作,而有些图像却没有完全相同的权限。
编辑2:问题解决了。不敢相信这是多么愚蠢,从数据库调用的一些文件名最后有空格......制作原始脚本的人在保存它们之前没有运行任何清理。