【问题标题】:PHP file_exists will not workPHP file_exists 将不起作用
【发布时间】:2011-11-05 14:54:15
【问题描述】:

我在 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"/>';
}

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

【问题讨论】:

  • 由于$filename 包含DOCUMENT_ROOT,如果您只是取出if 语句,如果代码真的有效,我会感到相当惊讶。
  • 是的,对不起,我应该提到我从一开始就删除了文档根目录,因为我知道 php 和 html 有不同的根路径
  • 在检查文件是否存在之前尝试运行$filenamerealpath()。其他问题可能是存在一些安全模式限制,它们不允许函数查看绝对文件路径。
  • 一个显而易见的问题是:您作为示例显示的路径实际上是正确的吗?如果您在 img src 属性正常工作时没有包含前导斜杠,那么很容易错过一个或多个子目录远离您认为的位置的影响。

标签: php file exists file-exists


【解决方案1】:

如果您在 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 就起作用了。 当我们正确配置服务器时,这些对我们来说都可以正常工作

【讨论】:

    【解决方案2】:

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

    sudo chmod 777 -R images/ 
    

    【讨论】:

      猜你喜欢
      • 2017-05-14
      • 2017-03-11
      • 2010-11-20
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 2014-08-05
      • 2015-11-09
      • 2011-09-03
      相关资源
      最近更新 更多