【问题标题】:How should I to set the error log for PHP CLI?我应该如何设置 PHP CLI 的错误日志?
【发布时间】:2012-02-15 19:38:44
【问题描述】:

我有一个 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

所以error_loglog_errors 都已设置。但是,实际上并没有保存任何日志。权限已到位。那会是什么呢?

我已阅读问题PHP CLI won't log errors,但我无法在其中找到解决方案。

【问题讨论】:

  • 你确定运行php的用户对/var/log/php_error_log有写权限吗?
  • 它确实有权写入,但问题是发生了重定向,在 CLI 中根本没有显示任何输出,也没有任何错误。
  • shell 重定向不应影响 PHP 的日志记录行为。你能发帖ls -al /var/log/php_error_log吗?

标签: error-handling php


【解决方案1】:

PHP 通过 CLI 和 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 设置或设置正确的写入权限、进程或文件所有者。

【讨论】:

  • 如果他从命令行运行命令,我怀疑他使用的是 CLI 配置
  • 当然,但是如果他不知道哪个是正确的 php.ini 并且他试图配置错误的怎么办?我自己也犯了同样的错误,花了一些时间才弄清楚:-) 他应该检查他是否在修改正确的 php.ini 文件,而不是提供有关配置有据可查的 php 指令的建议。
  • 知道答案,只是在测试错误行的末尾缺少分号。
【解决方案2】:

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

sudo -u www-data php your_script.php

【讨论】:

  • 很好,我的日志中有权限错误,因为我手动创建了它们。但是如果你只是把位置放在 php.ini 中,PHP 会为你创建文件(我不知道)——更容易!
猜你喜欢
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 2017-03-08
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多