我刚刚将我的服务器升级到 Fedora 17,并将一些配置文件合并.rpmnew
到现有配置文件中。我已成功将以下内容保存在单独的日志文件中,从而将我的 php 错误记录在php.ini
:
log_errors = On
error_log = /var/log/php-errors.log
我不确定为什么/var/log/httpd/error_log
尽管保留了上述设置,升级后仍会记录错误。
还,
$ ls -l /var/log/php-errors.log
-rwxrwxr--. 1 apache myself 232 Dec 13 16:49 /var/log/php-errors.log
表明 apache 确实拥有 php 错误日志文件。
什么原因导致 PHP 错误被记录到 apache 错误日志文件中?
答案1
我认为这里只是看到的一般 Apache 错误/var/log/httpd/error_log
。
我会插入一个对某些 PHP 逻辑的调用error_log('test');
,该逻辑已知会在刷新某个特定页面时进行解释,如果没有看到,/var/log/php-errors.log
那么我怀疑升级后的版本具有某种不同的配置或权限方案,导致旧配置停止工作。
我建议仔细阅读 中的“错误处理和日志记录”部分/etc/php/php.ini
,并检查其他指令的正确值。指令error_reporting
应设置为E_ALL
或E_ALL & ~E_DEPRECATED & ~E_STRICT
。指令log_errors
应为On
。
如果仅为 指定了文件名(但没有路径)error_log
,则该文件将出现在与调用 的 PHP 脚本相同的目录中error_log(...)
。
我还建议指定/tmp/php_error_log
,error_log
刷新页面,然后ls /tmp
查看文件是否存在。
如果文件不存在,请以 root 身份登录,并在整个文件系统中搜索文件名,以查看其最终位置。
通常,使 PHP 错误日志在特定目录中工作的正确配置会因 Apache、PHP 和各种发行版的不同版本而有所不同。
我可以说,在具有 Apache 2.4、PHP 5.5.11 和 systemd 版本 212-1 的 Arch Linux 上,上述配置将使 PHP 错误日志最终出现在类似于的地方/tmp/systemd-private-65d4c3e3cc534155bcf3ec708c2362f6-httpd.service-h8MSsD/tmp/php_error_log
。