我在PHP中遇到file_exists
函数的问题,它总是返回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"/>';
}
我不知道为什么,但我们去了。
答案 0 :(得分:0)
如果你在php.ini中使用open_basedir并将file_exists用于open_basedir路径之外的文件,则不会在log处警告,即使文件确实存在,file_exists也会返回false。 如果没有为php用户拥有的'other'读取文件权限,file_exists将无法找到您的文件。我以为我的目录名有空格(/ users / andrew / Pictures / iPhoto Library / AlbumData.xml),但实际情况是没有对图片,iPhoto Library或AlbumData.xml的读取权限。一旦我修复了它,file_exists就可以了。 这些对我们来说没问题,因为我们正确地配置了服务器
答案 1 :(得分:0)
如果禁止该文件夹,则file_exists不起作用。尝试将您的文件夹权限更改为777或755?
sudo chmod 777 -R images/