设置:CentOS 6.6,Apache 2.2.15,php 5.5.21
我正在构建一个显示文件内容的 php 脚本/var/log/httpd/error_log
。不幸的是,它不起作用。错误消息指出:
/var/www/domain.com/tools/server-logs-viewer.php 第 405 行权限被拒绝
第 405 行: $f = fopen($filename, "rb");
我已经将文件 chmoded 为 0777,只是为了检查,仍然不行。所以我假设该消息指的是文件所有权。日志文件归 root:root 所有,而 php 脚本归 apache:apache 所有。
我该怎么做才能让 apache 有足够的文件读取权限,同时又不影响错误报告过程?
答案1
我已经有很长时间没有用 PHP 做任何事情了,但如果没有进一步的信息,我会检查几个系统配置元素和 php.ini 设置:
日志文件的路径
请确保运行 apache 的用户能够访问文件所在的目录。这意味着它应该对路径上的目录具有 r+x 访问权限。
php.ini 设置
请查看 phpfopen 手册:
- safe_mode:取决于您使用的版本(似乎在 5.4.0 中已被删除)
- open_basedir:拒绝打开不在此树中的任何内容。
SELinux、AppArmor
您是否正在运行 SELinux 或 AppArmor?这可能会阻止 apache 进程访问文件,尽管有权限。
此致