1

我一直file_exists在使用 PHP 中的函数时遇到问题,它总是返回 false,尽管文件在那里,因为我可以删除 if 语句并且它显示得很好。

$filename = $_SERVER['DOCUMENT_ROOT']."/images/profilepictures/1.png";
if (file_exists($filename) == true)
{
    $output .= '<img src="'.$filename.'" alt="profile picture" width="200"/>';
}

$filename回声为:

/home/content/k/e/r/kernelkev/html/images/profilepictures/1.png

我一直在谷歌上搜索这个,大多数答案是使用 DOCUMENT_ROOT,但它仍然对我不起作用。

任何人都可以对此有所了解,因为它现在真的很烦我。


这似乎解决了它...

$filename = "/images/profilepictures/1.png";
if (file_exists("..".$filename))
{
    $output .= '<img src="'.$filename.'" alt="profile picture" width="150"/>';
}

我不知道为什么,但我们走了。

4

2 回答 2

0

如果您在 php.ini 中使用 open_basedir 并将 file_exists 用于 open_basedir 路径之外的文件,您将不会在日志中收到警告,并且即使文件确实存在,file_exists 也会返回 false。如果文件权限未被您的 php 用户拥有时未为“其他”启用文件权限,则 file_exists 将无法找到您的文件。我以为我在目录名称中有空格(/users/andrew/Pictures/iPhoto Library/AlbumData.xml)时遇到了问题,但实际情况是图片、iPhoto Library 或 AlbumData.xml 没有读取权限. 一旦我解决了这个问题,file_exists 就起作用了。由于我们正确配置了服务器,因此这些对我们来说都可以正常工作

于 2011-08-29T07:14:52.580 回答
0

如果文件夹被禁止,file_exists 将不起作用。尝试将您的文件夹权限更改为 777 或 755 ?

sudo chmod 777 -R images/ 
于 2016-06-15T06:59:29.313 回答