nginx下开启php-fpm输出错误日志的方法

浪费了一天时间的血泪教训…(平台:nginx 1.14;PHP 7.1;宝塔免费版5.9.0)

最近意识到零碎知识整理的重要性,想弄个个人知识管理的wiki,从钉子大佬的博客里得知了「TiddlyWiki」的存在[链接],能及时编辑,跨平台,还轻量很符合我的需求。然而在采用store.php本地存储文件时却发生了怎么也存储不上的问题。当时心急,文章没自己往下看,网上找了好久也没找到方法(教程大多都是apache的);然而替换成其他的(例如Mediawiki等)也不符合要求,很不爽,就搁置了下来,直到这次暑假。这次根据文章的的指示,要解决两个问题:

1.使用php的错误日志定位并解决问题;
2.解决split()->explode()的函数被废弃问题(这个直接替换掉即可)。

nginx是一个web服务器,因此nginx的access日志只有对访问页面的记录,不会有php的errors log信息。nginx把对php的请求发给「php-fpm fastcgi」进程来处理,默认的php-fpm只会输出php-fpm的错误信息,在php-fpm的errors log里也看不到php的errors log。
原因是php-fpm的配置文件php-fpm.conf中默认是关闭worker进程的错误输出,直接把他们重定向到「/dev/null」,所以我们在nginx的errors log和php-fpm的errors log都看不到php的错误日志。

解决方法->进行如下设置:

1.修改「php-fpm.conf」中配置(宝塔对应位置/www/server/php/71/etc/php-fpm.conf),没有则增加(注意好分组!!!):

[global]
error_log = log/php_error_log
[www]
catch_workers_output = yes

2.修改「php.ini」中配置(宝塔对应位置/www/server/php/71/etc/php.ini),没有则增加:

log_errors = On
error_log = "/var/log/error_log"
error_reporting = E_ALL & ~E_NOTICE

3.重启「php-fpm」,当PHP执行错误时就能看到错误日志在「/var/log/error_log(宝塔对应/www/server/php/71/var/log/error_log)」中了。如果出现以下情况:

ERROR: [/www/server/php/71/etc/php-fpm.conf:5] unknown entry ‘catch_workers_output’

…则是第一步配置的相应分组填写错误。

搞完后阅读了errors log才发现折腾了这么久就是为了解决split()函数替换的问题…某种意义上也算是白折腾了…

参考文章:
1.nginx php-fpm 输出php错误日志,ZhYQ_note@cnblogs,https://www.cnblogs.com/ZhYQ-Note/articles/5473380.html
2.关于NGINX下开启PHP-FPM 输出PHP错误日志的设置(已解决),justaposter@cnblogs,https://www.cnblogs.com/lechie/p/3696579.html
3.使用 TiddlyWiki 打造轻便个人 Wiki 知识库,Dimpurr,http://blog.dimpurr.com/tiddly-wiki/