我应该如何设置PHP CLI的错误日志


How should I to set the error log for PHP CLI?

我有一个PHP脚本在Apache中运行得很好,但在CLI中运行时失败了,所以我想知道发生了什么。

为此,我想查看错误日志,但我设置的CLI错误日志不起作用。我已经在正确的php.ini文件中设置了这一点,当我通过命令行获得错误日志详细信息时,就会确认这一点

php -i | grep error

结果:

display_errors => Off => Off
display_startup_errors => Off => Off
error_append_string => no value => no value
error_log => /var/log/php_error_log => /var/log/php_error_log
error_prepend_string => <font color=ff0000> => <font color=ff0000>
error_reporting => 30711 => 30711
html_errors => Off => Off
ignore_repeated_errors => Off => Off
log_errors => On => On
log_errors_max_len => 1024 => 1024
track_errors => Off => Off
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
suhosin.disable.display_errors => Off => Off
suhosin.sql.bailout_on_error => Off => Off

因此CCD_ 1和CCD_。但是,实际上没有保存任何日志。权限已到位。那会是什么呢?

我已经阅读了PHP CLI赢得';t记录错误,但我在其中找不到解决方案。

PHP通过CLI和HTTP请求都使用不同的PHP.ini配置。在您的情况下,我怀疑您是否正在处理CLI php使用的正确的php.ini文件。尝试执行:

php -i >> info.txt

这将把phpinfo()保存到一个本地文件info.txt加载的配置文件"-它应该指向加载的php.ini文件的绝对路径。

如果一切正常,只需运行以下CLI命令即可测试函数error_log是否按预期工作。通过CLI:执行

php -r "error_log('test error', 3, './errors.log');"

您应该在同一目录中找到文件errors.log,其中包含指定的测试错误。如果找不到它,则可能需要更新php.ini设置或设置正确的写入权限、进程或文件所有者。

日志文件可能已经由PHP解释器(mod_PHP或PHP_fpm等)与其他用户(www data?)创建。因此,如果你以其他人的身份运行脚本,它可能没有对文件的写访问权限,甚至可能没有对路径的访问权限。您可以尝试将其作为不同的用户运行

sudo -u www-data php your_script.php