【问题标题】:how to get php errors to show on syslog如何让 php 错误显示在 syslog 上
【发布时间】:2011-06-24 14:41:04
【问题描述】:

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

【问题讨论】:

  • 你在 php.ini 中放了什么? error_loglog_errorserror_reporting 是记录到文件的三巨头。
  • error_log = /var/log/php_errors.log, log_errors = On and error_reporting = E_ALL & ~E_DEPRECATED
  • 运行它的帐户是否在 /var/log 和该 php-errors.log 中具有写入权限?
  • 我不熟悉如何检查用户是否在 /var/log 中具有写入权限,但它确实具有 php-errors.log 的权限

标签: php error-handling syslog


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在您的 php.ini 中尝试error_log = syslog

    【讨论】:

      【解决方案3】:

      有两个问题需要考虑:

      首先,PHP CLI 使用的 php.ini 与通过 Apache 运行的 PHP 版本不同。确保您在 CLI 版本中编辑 error_log

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

      【讨论】:

      • 登录到 syslog 时,您不会写入文件。 syslog 守护进程会执行此操作。这个答案没有意义。
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2015-07-22
        • 1970-01-01
        • 1970-01-01
        • 2013-02-11
        • 1970-01-01
        • 2021-07-18
        相关资源
        最近更新 更多