file_exists() 返回 false,但该文件确实存在

2022-08-30 11:59:53

我在file_exists()上遇到了一个非常奇怪的问题。我正在使用此功能来检查同一文件夹中是否存在2个不同的文件。我已经仔细检查过了,它们都存在。

echo $relative . $url['path'] . '/' . $path['filename'] . '.jpg';
Result: ../../images/example/001-001.jpg

echo $relative . $url['path'] . '/' . $path['filename'] . '.' . $path['extension'];
Result: ../../images/example/001-001.PNG

现在让我们在这些上使用file_exists():

var_dump(file_exists($relative . $url['path'] . '/' . $path['filename'] . '.jpg'));
Result: bool(false)

var_dump(file_exists($relative . $url['path'] . '/' . $path['filename'] . '.' . $path['extension']));
Result: bool(true)

我不明白 - 这两个文件都存在。我运行的是 Windows,因此它与区分大小写的问题无关。安全模式已关闭。

值得一提的是,.png一个是由用户通过FTP上传的,而.jpg一个是使用脚本创建的。但据我所知,这不应该有什么不同。

有什么提示吗?

谢谢


答案 1

file_exists()只是不适用于HTTP地址。

它只支持文件系统路径(和FTP,如果你使用的是PHP5)。

请注意:

工程:

if  (file_exists($_SERVER['DOCUMENT_ROOT']."/folder/test.txt") 
    echo "file exists";

不起作用:

if (file_exists("www.mysite.com/folder/test.txt") 
    echo "file exists";

答案 2

的结果已缓存,因此请尝试使用 。如果这没有帮助,请重新检查名称 - 它们可能相似,但不相同。file_exists()clearstatcache()


推荐