我有一个通过 Apache 运行良好的 PHP 脚本,但在 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
因此 error_log
和 log_errors
都已设置。但是,实际上没有保存任何日志。权限已到位。那它会是什么呢?
我已经阅读了问题 PHP CLI won't log errors ,但我在那里找不到解决方案。
最佳答案
通过 CLI 的 PHP 和 HTTP 请求都使用不同的 php.ini 配置。对于您的情况,我怀疑您是否正在处理 CLI PHP 使用的正确 php.ini 文件。尝试执行:
php -i >> info.txt
这会将您的 phpinfo() 保存到本地文件 info.txt 中。然后打开文件并找到设置“Loaded Configuration File”——它应该指向加载的 php.ini 文件的绝对路径。
如果一切正常,则只需运行以下 CLI 命令来测试函数 error_log 是否按预期工作。通过 CLI 执行:
php -r "error_log('test error', 3, './errors.log');"
您应该在同一目录中找到具有指定测试错误 的errors.log 文件。如果您找不到它,那么您可能需要更新您的 php.ini 设置或设置正确的写入权限、进程或文件所有者。
关于error-handling - 我应该如何设置 PHP CLI 的错误日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8954964/