PHP error_log方法不会将错误写入自定义错误日志文件。它只会写入/var/log/apache2/php_error.log
以下是我php.ini
中的日志记录设置:
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错误日志(/var/log/apache2/error.log
)而不是我上面指定的错误日志。
我已经尝试过的事情:
/var/log/apache2/php_errors.log
是777权限,文件存在。(仅供参考:我在Ubuntu 11.04上使用Apache / 2.2.17和PHP / 5.3.5-1ubuntu7.2)
我做错了什么?
答案 0 :(得分:14)
我想回答这个问题,因为即使这是一个老问题,它仍然是谷歌的一个很好的结果。
我通过为日志目录中的所有用户添加写权限来解决这个问题。
在我的情况下,用户'http'需要能够写入/ var / log / httpd /所以我跑了
# chmod a+w /var/log/httpd
如果该文件已存在,则可能有助于首先将其删除并允许Apache创建它。
我的php.ini文件也包含整个路径。
error_log = /var/log/httpd/php_errors.log
答案 1 :(得分:2)
您可以尝试指定如下文件名:
我在Ubuntu上使用Apache 2.2.22。
使用此PHP命令:
error_log("eric", 3, "/home/el/error.log");
第一个参数是要发送到错误日志的消息。第二个参数3
表示“期望文件名目的地。第三个参数是目的地。
创建文件/home/el/error.log并将其所有权设置为:
el@apollo:~$ ll error.log
-rwxrwxr-x 1 www-data www-data 7 Dec 13 14:30 error.log
当PHP解释error_log方法时,它会将消息附加到您的文件中。
答案 2 :(得分:0)
删除php_errors.log并重新启动apache2,服务器本身将创建一个具有适当权限和所有者的新php_errors.log文件。
rm -f /var/log/apache2/php_errors.log
service apache2 restart
ll /var/log/apache2/php_errors.log
答案 3 :(得分:0)
您可以在VirtualHost站点配置文件中设置站点的错误日志文件,例如:/etc/apache2/sites-enabled/example.com.conf
:
<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系统中${APACHE_LOG_DIR}
通常是/var/log/apache2
错误和访问权限将保存在${APACHE_LOG_DIR}/www.example.com-error.log
和${APACHE_LOG_DIR}/www.example.com-access.log
。
答案 4 :(得分:0)
确保Apache用户对日志文件路径中的任何父文件夹至少具有EXECUTION权限。没有它,Apache无法列出文件夹中的任何内容,因此看不到日志文件。
ls
drwxr-x--- root adm folder
chmod o+x folder
ls
drwxr-x--x root adm folder
那是一个真正的陷阱! ;-)
然后,还要检查Apache用户是否确实具有对实际日志文件的读写权限。
答案 5 :(得分:0)
我遇到了这个问题,然后我给了 apache 日志文件夹的正确权限,然后使用以下命令重新启动了我的 apache:
sudo chmod a+w /var/log/apache2/
sudo service apache2 restart
答案 6 :(得分:-4)
我今天花了几个小时试图弄清楚为什么这不起作用并试图调试代码解决我可以将任何内容记录到php错误日志的事实。毋庸置疑,我正在以蜗牛的速度前进,直到我开始进行伐木工作。
我猜想超过90%的时间是权限问题。在我的情况下,守护进程是日志文件的所有者和组,我必须sudo su
root,然后更改日志文件的权限。我改为:
chmod 777 myphperror.log
感谢上帝对stackoverflow.com的了解