PHP 和 Apache file_exists 不能从 URL 工作

Posted

技术标签:

【中文标题】PHP 和 Apache file_exists 不能从 URL 工作【英文标题】:PHP and Apache file_exists not working from URL 【发布时间】:2016-11-21 00:37:30 【问题描述】:

如果我从命令行运行,下面的代码有效(打印“找到文件”)查找

php a.php

但如果我尝试从浏览器http://localhost/a.php 访问它,它会打印“找不到文件”。

在不同的机器上,相同的 URL 可以正常工作,这真的很奇怪。我不知道为什么它不起作用。

我已经检查过 open_basedir 它已经被禁用并且 httpd.conf 中没有条目

 if(file_exists("/mnt/disk1/a.jpg"))
 
  echo "file found";
     else
 
  echo "file not found";       ?>

【问题讨论】:

你检查文件权限了吗?网络是否有足够的读取权限? 是的,我已授予文件 777 权限 你在尝试 clearstatcache() 吗? file_exists() returns false even if file exist (remote URL)的可能重复 如果您想检查文件是否存在,您需要使用标题。通常,该功能仅适用于本地文件。 【参考方案1】:

Web 服务器用户帐户必须具有读取文件的权限 - 这与您在控制台上使用的用户帐户不同。

sudo chmod +rx /mnt/disk1/a.jpg

Apache 还需要对所有文件夹的执行访问权限。

sudo chmod +x /mnt/disk1
sudo chmod +x /mnt

【讨论】:

感谢 jeff 以某种方式创建文件夹 wittout 可执行权限

以上是关于PHP 和 Apache file_exists 不能从 URL 工作的主要内容,如果未能解决你的问题,请参考以下文章

PHP file_exists 返回 false 但文件确实存在

PHP Phar - file_exists() 问题

如何修复 PHP 警告:file_exists():文件名超过此平台上允许的最大路径长度 (260)?

php学习之道:php中is_file和file_exist的差别,and推断文件夹is_dir

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

PHP - file_exists 需要很长时间