在 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
-
重新启动的阿帕奇
-
检查
phpinfo()
输出以验证我对 php.ini 文件所做的更改是否确实如此。 -
在验证错误仍然会进入 Apache 日志后,我实际创建了php_errors.log并重试。 仍然要去阿帕奇日志!
-
已重新启动网络服务器! 还。。。!
有人有解决方案吗?
检查/var/log
的目录权限。确保运行 Web 服务的用户对该文件夹具有写入权限。或者,创建一个子文件夹(/var/log/phplogs?)并为相关用户分配显式权限,然后将error_log
值更改为该文件夹中的文件
这与所有权有关。 一个或另一个已经奏效[出于我不清楚的原因]:
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相反......同样出于我不清楚的原因]
根据记录,Ubuntu使用AppArmor,它限制了Apache的功能。
此外,若要更改文件的权限并编辑 php.ini 文件,必须执行以下步骤:
转到下一个文件
/etc/apparmor.d/abstractions
编辑此文件
阿帕奇2-常见
添加下一行
/var/log/php_errors.log rw,
其中 rw 表示进程可以读取和写入此文件
或者你也可以做:
sudo nano /etc/apparmor.d/abstractions/apache2-common
最后,重新加载装甲的配置
systemctl reload apparmor
注意:Centos/Redhat/Oracle Linux 使用 SELinux,它需要相同的步骤,但配置不同。