Apache2、mpm_event + PHP-FPM 错误记录在同一行

我昨天将我的 Debian7 升级到 Debian10,并使用 php-fpm (php 7.4) 从 prefork 更改为 mpm_event

错误消息和 error_log 输出在我的 /apache/error.log 文件中显示为: 我已经替换了文件名、ip 和端口。

[Tue May 19 11:26:38.506805 2020] [proxy_fcgi:error] [pid 28334:tid 139811391133440] [client (ip):(port)] AH01071: Got error 'PHP message: PHP Notice:  Undefined variable: SQL_ERROR in (file) on line 198PHP message: PHP Notice:  Undefined variable: SQL_ERROR in (file) on line 200PHP message: PHP Notice:  Undefined variable: SQL_ERROR_MSG in (file) on line 201PHP message: PHP Notice:  Undefined variable: SQL_command in (file) on line 202'

并且所有错误都被缓冲,并在同一行上输出(很难调试)。

php-fpm 使用 www-data 用户

error.log 对 www-data:www-data 有 640 权限

php-fpm/pool.d/www.conf 得到了 error.log = /var/log/apache2/error.log

关于为什么我没有直接在 error.log 文件中获取错误日志,您有什么建议吗?

编辑:所有 PHP 配置均来自全新安装。


芜湖不芜
浏览 139回答 2
2回答

www说

我有和你一样的系统,Debian 10,php-fpm 7.3(而不是 7.4),apache2,并且有同样的问题,输出混乱。我用一个小脚本解决了它,手动添加换行符 \n 和一个用于漂亮打印的制表符 \t#!/bin/sh tail -f "/var/log/apache2/$1" | sed 's/PHP\s/\n\tPHP\s/g'现在我看到每条消息都在一个新行上,也有一个简单的缩进。你可以给脚本起任何名字,我选择了 greplog,放置在具有足够权限的系统路径上,并将日志文件名作为参数传递

喵喵时光机

从 Debian 7 升级到 Debian 10 时,您的 PHP 版本可能已从 5.4 升级到 7.4。PHP 7 有许多重大更改,所以我猜您的代码正在使用一些已删除的功能/命中引入的语法更改。
打开App,查看更多内容
随时随地看视频慕课网APP