Apache不记录php错误

Jus*_*lys 20 php apache logging

PHP通过CLI成功将错误记录到/var/log/php_errors.log.

但是apache + php不会记录错误.

[bla@notebook ~]$ apachectl -v
Server version: Apache/2.2.17 (Unix)
Server built:   May 19 2011 03:15:39

[bla@notebook ~]$ php -v
PHP 5.3.6 with Suhosin-Patch (cli) (built: Mar 23 2011 13:28:00) 
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
Run Code Online (Sandbox Code Playgroud)

php.ini我有:

display_errors = On
error_reporting = E_ALL | E_STRICT
log_errors = On
error_log = php_errors.log
Run Code Online (Sandbox Code Playgroud)

httpd.conf中:

ErrorLog "/var/log/httpd/error_log"
Run Code Online (Sandbox Code Playgroud)

权限:

[bla@notebook /]$ ls -la /var/log/httpd/
-rwxrwxr-x 1 root root 133351 21.11.2011 11:18 access_log*
-rwxrwxr-x 1 root http   1307 21.11.2011 11:18 error_log*

[bla@notebook /]$ ls -la /var/log/php_errors.log 
-rwxrwxr-x 1 root http 521 14.11.2011 17:31 /var/log/php_errors.log*
Run Code Online (Sandbox Code Playgroud)

如您所见,Apache守护程序具有写入日志文件的权限.

在/var/log/php_errors.log和/ var/log/httpd/error_log中,Apache或PHP仍然没有错误.

更新1.

在php.ini中更改了这一行:

error_log = php_errors.log 
Run Code Online (Sandbox Code Playgroud)

完整路径:

error_log = /var/log/php_errors.log 
Run Code Online (Sandbox Code Playgroud)

权限还可以.但是,如果有人也遇到问题,您可以调试日志文件0777的设置权限或更改文件所有者.

Nar*_*arf 9

Apache和CLI通常有两个单独的php.ini文件 - 你确定你正在查看正确的文件吗?

编辑:

我能想到的另外2个选项:

  • 一些Apache指令正在弄乱PHP的日志路径(或禁用日志记录选项,虽然情况不太可能) - 尝试在php.ini中设置日志文件的绝对路径(@Frosty Z建议这样的东西)
  • 我注意到您的PHP安装已应用Suhosin补丁,它会进行一些限制性修改以提高安全性.虽然理论上有足够的权限让http用户组中的用户写入日志文件 - 可能有一些类似suphp的行为,当你的脚本通过web访问时,它是用/作为用户名来执行的.所有者(脚本的文件所有者) - 尝试更改它.


Ste*_*ian 5

我有同样的问题.

log_errors_max_len = 0php.ini中的设置对我有用.

PHP手册:

设置log_errors的最大长度(以字节为单位).在error_log中添加了有关源的信息.默认值为1024,0允许不应用任何最大长度.此长度适用于记录的错误,显示的错误以及$ php_errormsg,但不适用于显式调用的函数,如error_log().