提问人:ReverseEMF 提问时间:9/7/2013 最后编辑:halferReverseEMF 更新时间:2/16/2021 访问量:4296
无法获取 PHP 错误以转到日志文件(Apache 日志除外)
Can't get PHP errors to go to a log file (other than the Apache log)
问:
在 Ubuntu Web 服务器 [LAMP] 上,我试图将 PHP 错误写入 php_error 文件,但无论我做什么,它们都会继续进入 apache 日志。
这是我尝试/做过的:
编辑了php.ini文件:
- error_reporting = E_ALL |E_STRICT
- display_error = 关闭
- log_errors = 开
- error_log = /var/log/php_errors.log
重新启动了 Apache
检查了输出以验证我对php.ini文件所做的更改是否进行了 - 他们做到了。
phpinfo()
在验证错误仍然进入 Apache 日志后,我实际创建了php_errors.log并重试。仍然要去Apache日志!
已重新启动Web服务器!还。。。!
有人有解决方案吗?
答:
2赞
DaveyBoy
9/7/2013
#1
检查 的目录权限。确保运行 Web 服务的用户对该文件夹具有写入权限。或者,创建一个子文件夹 (/var/log/phplogs?) 并为相关用户分配显式权限,然后将值更改为该文件夹中的文件/var/log
error_log
2赞
ReverseEMF
3/19/2015
#2
这与所有权有关。一个或另一个奏效了[出于我不清楚的原因]:
chown www-data:www-data /var/log/php_error.log
chown same-user-as-www-home:same-user-as-web-home /var/log/php_error.log
此外,以下方面也有所作为:
chmod 664 /var/log/php_error.log
[与chmod 644相反......再次出于我不清楚的原因]
0赞
magallanes
2/16/2021
#3
作为记录,Ubuntu 使用 AppArmor,它限制了 Apache 的功能。
此外,若要更改对文件的权限并编辑php.ini文件,必须执行以下步骤:
转到下一个文件
/etc/apparmor.d/抽象
编辑此文件
apache2-通用
添加下一行
/var/log/php_errors.log rw,
其中 rw 表示进程可以读取和写入此文件
或者你也可以做:
sudo nano /etc/apparmor.d/abstractions/apache2-common
最后,重新加载apparmor的配置
systemctl reload apparmor
注意:Centos/Redhat/Oracle Linux 使用 SELinux,它需要相同的步骤,但配置不同。
评论
log_errors_max_len
/var/log/php_errors.log
/var/log/httpd/php_errors.log
/var/log/apache2/php_errors.log