如何在单独的文件中记录 php 错误?

如何在单独的文件中记录 php 错误?

我刚刚将我的服务器升级到 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_ALLE_ALL & ~E_DEPRECATED & ~E_STRICT。指令log_errors应为On

如果仅为 指定了文件名(但没有路径)error_log,则该文件将出现在与调用 的 PHP 脚本相同的目录中error_log(...)

我还建议指定/tmp/php_error_logerror_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

相关内容