【问题标题】:PHP CLI logs error to file but PHP via apache does notPHP CLI 将错误记录到文件中,但通过 apache 的 PHP 没有
【发布时间】:2013-10-19 20:07:06
【问题描述】:

我正在尝试将 PHP 错误记录到日志文件中。我在 php.ini 中进行了必要的更改,并将日志文件的权限调整为 777。PHP CLI 记录正常,但通过 apache 没有。

  • 我知道使用的 php.ini 是正确的。我通过 apache 为 CLI 和 php 提供了一个文件。
  • 我创建了日志文件,为了测试我将权限设置为 777。
  • 我在 php 文件中生成了一个错误,但没有记录任何内容。
  • 我还在产生错误的同一文件中尝试了 phpinfo(),以检查值是否正确。

php.ini:

error_log = /var/log/httpd/php.log
log_errors = On
error_reporting = E_ALL

版本:

[user@host httpd]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Aug 13 2013 17:29:28

[user@host httpd]# php -v
PHP 5.4.13 (cli) (built: Mar 14 2013 08:57:49)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

我已经解决了所有类似的问题,但没有运气。特别是this one,解决方案是在 php.ini 中设置日志的完整路径。事实并非如此。

【问题讨论】:

  • 如果您在文件本身中设置日志记录会发生什么?
  • @Dagon,你指的是哪个文件?
  • 任何你想用来测试它是否可以工作的 php 文件

标签: php apache logging


【解决方案1】:

很可能您有 chroot-ed apache 或来自 systemd 的“有用”重定向。

我遇到了同样的问题,只是在系统中搜索了文件名。

# find / -name apay_api.log 2>/dev/null
/mnt/FAST/tmp/systemd-private-edd1fc8681054769ac401c6bd8358fdd-apache2.service-mP51C4/tmp/apay_api.log

你的情况也可能如此。

原因是

PrivateTmp=true

在 /usr/lib64/systemd/system/apache2.service 之类的文件中。

【讨论】:

    【解决方案2】:

    如果 php 作为其模块,Apache 会设置自己的日志文件。换句话说,它取决于 apache 设置。尝试在apache配置文件中找到“Log”选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 2012-01-02
      • 2018-07-19
      • 2013-03-06
      • 2013-08-22
      • 1970-01-01
      相关资源
      最近更新 更多