如何让 php 错误显示在 syslog 上

问题描述 投票:0回答:4

我有一个计划在

crontab
运行的脚本。我注意到我在任何地方都看不到 php 错误。我希望能够看到 php 错误记录在
/var/log/syslog
或其他地方。我已经尝试配置我的
php.ini
以记录
/var/log/php-errors.log
上的错误,检查权限并重新启动apache服务仍然没有日志。

php error-handling syslog
4个回答
10
投票

我的

/etc/php5/cli/php.ini
文件中有这个(我使用 Debian;我假设无论您使用什么都一样),它会将所有 cron 错误写到 /var/log/messages:

error_reporting  =  E_ALL & ~E_NOTICE
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 0
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
error_log = syslog

5
投票

有两个问题需要考虑:

首先,PHP CLI 使用与通过 Apache 运行的 PHP 版本不同的 php.ini。确保您正在编辑 CLI 版本中的

error_log

其次,确保运行 cron 的用户可以写入您的日志文件。通常您的用户帐户无法写入日志文件,因此您可能需要编辑权限。


5
投票

在你的 php.ini 中尝试

error_log = syslog


2
投票

在 Ubuntu 16.04 上,/dev/log 属于 mysyslog 组(由 systemd 定义)。因此,要使 apache2/php 能够写入 syslog,您必须将用户 www-data 添加到组 mysyslog 中:

addgroup www-data mysyslog

© www.soinside.com 2019 - 2024. All rights reserved.