如何在syslog上显示php错误

如何在syslog上显示php错误,php,error-handling,syslog,Php,Error Handling,Syslog,我有一个脚本计划在crontab上运行。我注意到我在任何地方都看不到php错误。我希望能够在/var/log/syslog或其他地方看到记录的php错误。我已尝试将我的php.ini配置为在/var/log/php-errors.log上记录错误,检查权限并重新启动apache服务,但仍然没有日志。在php.ini中尝试error\u log=syslog。我在/etc/php5/cli/php.ini文件中有此项(我使用Debian;我假设无论您使用什么,它都是相同的)并将所有cron错误写入

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

在php.ini中尝试
error\u log=syslog

我在
/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

有两个问题需要考虑:

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


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

在Ubuntu 16.04上,/dev/log由组mysyslog拥有(由systemd定义)。因此,为了使apache2/php能够写入syslog,您必须将用户www数据添加到组mysyslog:
addgroup www-data-mysyslog

您在php.ini中添加了什么
error\u log
log\u errors
error\u reporting
是记录到文件的三大错误。error\u log=/var/log/php\u errors.log,log_errors=On和error_reporting=E_ALL&~E_不赞成它运行的帐户在/var/log中有写权限,尤其是在php-errors.log上?我不知道如何检查用户是否在/var/log中有写权限,但它确实有php-errors.log权限当登录到syslog时,你不写文件。syslog守护进程执行此操作。这个答案没有道理。