:

php-fpm 输出 php 错误日志

song100e 发布于:2019-2-28 11:25 分类:Linux  有 68 人浏览,获得评论 0 条 标签: php-fpm 

        nginx 是一个 web 服务器,因此 nginx 的 access 日志只有对访问页面的记录,不会有 php 的 error log 信息。

        nginx 把对 php 的请求发给 php-fpm fastcgi 进程来处理,默认的 php-fpm 只会输出 php-fpm 的错误信息,在 php-fpm 的 errors log 里也看不到 php 的 errorlog。原因是 php-fpm 的配置文件 php-fpm.conf 中默认是关闭 worker 进程的错误输出,直接把他们重定向到 /dev/null,所以我们在 nginx 的 error log 和 php-fpm 的 errorlog 都看不到 php 的错误日志。

        

解决 nginx 下 php-fpm 不记录 php 错误日志的办法:
1.修改 php-fpm.conf 中配置 没有则增加
error_log = log/php-fpm.log
[www]
catch_workers_output = yes

2.修改 php.ini 中配置,没有则增加
log_errors = On
error_log = "/usr/local/php/var/log/error_log"
error_reporting=E_ALL & ~E_NOTICE

如果不知道 php.ini 位置, 可以参考 phpinfo 信息

php-ini.PNG


php-error-log.PNG


3.重启 php-fpm,
当 PHP 执行错误时就能看到错误日志在 "/usr/local/php/var/log/error_log" 中了。

比如 <?php echo 100/0; ?> 分母不能为 0 错误,

php-error.PNG

注意,如果出现ERROR: [/usr/local/php/etc/php-fpm.conf:5] unknown entry ‘catch_workers_output’错误

catch_workers.PNG

请在第一步的时候,认真将配置写入相对应的组[www]

赞助我,共同学习进步!