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
在php.ini中,我有:
display_errors = On
error_reporting = E_ALL | E_STRICT
log_errors = On
error_log = php_errors.log
在httpd.conf中
ErrorLog "/var/log/httpd/error_log"
权限:
[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*
如您所见,Apache守护进程具有写入日志文件的权限。
Apache或PHP在/var/log/php_errors.log和/var/log/httpd/error_log中仍然没有错误。
更新1.
在php.ini中更改了此行:
error_log = php_errors.log
至完整路径:
error_log = /var/log/php_errors.log
权限正常。但如果有人也有问题,您可以调试设置权限到日志文件0777或更改文件所有者。
发布于 2011-11-21 19:35:26
对于Apache和CLI,通常有两个独立的php.ini文件--你确定你看到的是正确的那个吗?
编辑:
我能想到的另外两个选项:
http
用户组中的用户有足够的权限写入日志文件-可能有一些类似suphp的行为,但当通过web访问您的脚本时,它将以/作为设置为其所有者(即脚本的文件所有者)的用户名执行-尝试更改它。发布于 2013-07-18 21:54:16
我也有同样的问题。
在php.ini中设置log_errors_max_len = 0
对我来说很有效。
设置log_errors的最大长度,单位为字节。在error_log中,添加了有关源的信息。默认值为1024,0允许在所有上不应用任何最大长度。此长度适用于记录的错误、显示的错误以及$php_errormsg,但不适用于显式调用的函数,如error_log()。
发布于 2013-06-13 23:53:07
在过去,我在两种情况下没有错误日志:
php_error_log
文件的权限。由于.htaccess
配置错误,例如重写模块设置错误,出现error_log
文件中。https://stackoverflow.com/questions/8209729
复制相似问题