PHP error_log method doesn't write errors to my error log file
PHP error_log方法不会将错误写入自定义错误日志文件。它只会写入/var/log/apache2/php_error.log
这是我的
1 2 3 4 5 | error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE display_errors = Off log_errors = On log_errors_max_len = 0 ; also tried with 9999999 error_log = /var/log/apache2/php_errors.log |
PHP将其错误写入常规的Apache错误日志(
我已经尝试过的事情:
(仅供参考:我在Ubuntu 11.04上使用Apache / 2.2.17和PHP / 5.3.5-1ubuntu7.2)
我究竟做错了什么?
我想回答这个问题,因为尽管这是一个老问题,但在Google上还是很高的成绩。
我通过在日志目录上为所有用户添加写权限来解决此问题。
就我而言,用户" http"必须能够写入/ var / log / httpd /,所以我运行了
1 | # chmod a+w /var/log/httpd |
如果文件已经存在,则可以先删除它并允许Apache创建它。
我的php.ini文件也包含整个路径。
1 | error_log = /var/log/httpd/php_errors.log |
您可以尝试这样指定文件名:
我在Ubuntu上使用Apache 2.2.22。
使用以下PHP命令:
1 | error_log("eric", 3,"/home/el/error.log"); |
第一个参数是要发送到错误日志的消息。第二个参数
创建文件/home/el/error.log并将其所有权设置为:
1 2 | el@apollo:~$ ll error.log -rwxrwxr-x 1 www-data www-data 7 Dec 13 14:30 error.log |
当PHP解释error_log方法时,它将消息附加到您的文件中。
资源:
http://www.php.net/manual/zh/function.error-log.php
您可以在VirtualHost站点配置文件中为站点设置错误日志文件,例如:
1 2 3 4 5 6 7 8 9 | <VirtualHost *:80> .... ErrorLog ${APACHE_LOG_DIR}/www.example.com-error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/www.example.com-access.log combined </VirtualHost> |
在Unix系统中,
错误和访问权限将保存在
删除php_errors.log并重新启动apache2,服务器本身将创建一个具有适当权限和所有者的新php_errors.log文件。
1 2 3 4 | rm -f /var/log/apache2/php_errors.log service apache2 restart ll /var/log/apache2/php_errors.log |
我今天花了几个小时试图弄清楚为什么它不起作用,并尝试调试代码,以解决我可以将任何内容记录到php错误日志这一事实。不用说,直到我开始伐木工作之前,我一直在以蜗牛般的步伐前进。
我猜想超过90%的时间是权限问题。在我的情况下,守护进程是日志文件的所有者和组,我必须
感谢上帝的stackoverflow.com