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 警告:file_exists():文件名超过此平台上允许的最大路径长度 (260)?
php学习之道:php中is_file和file_exist的差别,and推断文件夹is_dir