error-handling - 我应该如何设置 PHP CLI 的错误日志?

标签 error-handling php

我有一个通过 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_loglog_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/

相关文章:

python - 向 python 字典分配和更新值时总是出现内存错误

PHP Mysql 无法正常工作 echo 内连接

php - 提交表单时,出现错误

c# - 更好的是 : direct connection or through php for mysql database

php - 添加 mysql_real_escape_string() 导致将空白值存储到数据库

asp.net - 找不到ASP.NET错误404页面错误页面

java - ANDROID:如何让应用程序将所有错误日志记录在数据库中?

perl - Bash的“DIE”信号处理程序

javascript - (PHP/JS)Google Maps API 3在IE,FF和iPad(Safari/Chrome)中未获得结果,但在Chrome&M8 Android( native /Chrome)中获得结果

c - openssl ERR_print_errors_fp() 函数,无法将错误写入文件