使 error_log 可被 apache 读取

使 error_log 可被 apache 读取

设置: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 进程访问文件,尽管有权限。

此致

相关内容