0

在 Ubuntu Web 服务器 [LAMP] 上,我试图将 PHP 错误写入 php_error 文件,但无论我做什么,它们都会继续访问 apache 日志。

这是我尝试过/做过的事情:

  1. 编辑 php.ini 文件:

    • error_reporting = E_ALL | E_STRICT
    • display_error = 关闭
    • log_errors = 开启
    • error_log = /var/log/php_errors.log
  2. 重新启动 Apache

  3. 检查phpinfo()输出以验证我对 php.ini 文件所做的更改是否已生效——确实如此。

  4. 在验证错误仍然会进入 Apache 日志后,我物理地创建了 php_errors.log 并再次尝试。仍在访问 Apache 日志!

  5. 重启网络服务器!仍然...!

有人有解决方案吗?

4

3 回答 3

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 相对...再次出于我不清楚的原因]

于 2015-03-19T00:59:45.760 回答
2

检查目录权限/var/log。确保运行您的 Web 服务的用户对该文件夹具有写入权限。或者,创建一个子文件夹(/var/log/phplogs?)并为相关用户分配明确的权限,然后将error_log值更改为该文件夹中文件

于 2013-09-07T00:23:26.223 回答
0

作为记录,Ubuntu 使用AppArmor,它限制了 Apache 的功能。

此外,要更改文件的权限并编辑 php.ini 文件,您必须执行以下步骤:

转到下一个文件

/etc/apparmor.d/abstractions

编辑此文件

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,需要相同的步骤,但配置不同。

于 2021-02-16T12:32:11.673 回答