gpt4 book ai didi

PHP file_exists() 在某些文件上返回 false

转载 作者:可可西里 更新时间:2023-11-01 12:36:39 26 4
gpt4 key购买 nike

我在 Linux 服务器上使用 file_exists() 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 访问权限,所以如果有人有任何想法,我会很乐意尝试。

预先感谢您的建议,如果您需要更多信息,请告诉我。

编辑:回答下面评论中的问题。

  • 是的,图像在那里,绝对不是缓存。
  • 安全模式已关闭(我已经在帖子中提到了这一点)。
  • 路径不是符号链接(symbolic link),而是指向服务器上文件位置的直接链接。
  • 凤凰,它是一致的。工作文件将始终有效,反之亦然。名称是 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 的运行方式,它们确实以 nobody 方式运行,但这并不能解释为什么有些图像可以工作而有些不能使用完全相同的权限。

编辑 2: 问题已解决。不敢相信这是多么愚蠢,一些从数据库调用的文件名末尾有空格......制作原始脚本的人在保存它们之前没有进行任何清理。

最佳答案

尝试运行 ls -l/home/user/public_html/images/location/ 并将输出添加到您的问题中。

这很可能是权限问题。 PHP 可能没有对该文件的读取权限。

关于PHP file_exists() 在某些文件上返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4634797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com