无法获取 PHP 错误以转到日志文件(Apache 日志除外)
Posted
技术标签:
【中文标题】无法获取 PHP 错误以转到日志文件(Apache 日志除外)【英文标题】:Can't get PHP errors to go to a log file (other than the Apache log) 【发布时间】:2013-09-11 03:56:34 【问题描述】:在 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
检查了phpinfo()
输出,以验证我对 php.ini 文件所做的更改是否已生效——确实如此。
在确认错误仍然进入 Apache 日志后,我物理地创建了 php_errors.log 并再次尝试。还是去 Apache 日志!
重新启动 Web 服务器!还是……!
有人有办法吗?
【问题讨论】:
检查log_errors_max_len
是否大于0
Web服务器是否有权限创建/var/log/php_errors.log
?您可能需要将其放置在 Apache 可以写入的位置中,例如 /var/log/httpd/php_errors.log
或 /var/log/apache2/php_errors.log
【参考方案1】:
为了记录,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,步骤相同但配置不同。
【讨论】:
【参考方案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 相对...再次出于我不清楚的原因]
【讨论】:
【参考方案3】:检查/var/log
的目录权限。确保运行您的 Web 服务的用户对该文件夹具有写入权限。或者,创建一个子文件夹 (/var/log/phplogs?) 并为相关用户分配明确的权限,然后将 error_log
值更改为 that 文件夹中的文件
【讨论】:
以上是关于无法获取 PHP 错误以转到日志文件(Apache 日志除外)的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 XCode 滑动手势以转到上一个/下一个文件冻结编辑器?
添加按钮以转到新视图并收到此错误 -[ViewController setData:]: unrecognized selector sent to instance 0x7f962ae90cf0