nginx php-fpm 输出php错误日志-php教程

资源魔 63 0

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中设置装备摆设 不则添加

catch_workers_output = yes
error_log = log/error_log

2.修正php.ini中设置装备摆设,不则添加

log_errors = On
error_log = "/usr/local/lnmp/php/var/log/error_log"
error_reporting=E_ALL&~E_NOTICE

3.重启php-fpm
当PHP执行谬误时就能看到谬误日记正在"/usr/local/lnmp/php/var/log/error_log"中了

请留意:

1. php-fpm.conf 中的php_admin_value[error_log] 参数 会笼罩php.ini中的 error_log 参数
以是确保你正在phpinfo()中看到的终极error_log文件具备可写权限而且不设置php_admin_value[error_log] 参数,不然谬误日记会输入到php-fpm的谬误日记里。

2.找没有到php.ini地位,应用php的phpinfo()后果查看

3.若何修正PHP谬误日记没有输入到页面或屏幕上
修正php.ini

display_errors = off //没有显示谬误信息(没有输入到页面或屏幕上)
log_errors = on //记载谬误信息(保留到日记文件中)
error_reporting = E_ALL //捕捉一切谬误信息
error_log = //设置日记文件名

顺序中修正以上设置装备摆设

ini_set("display_errors",0)
ini_set("error_reporting",E_ALL); //这个值如同是个PHP的常量
ini_set("error_log","<日记文件名>")
ini_set("log_errors",1);

4.若何将php的谬误日记输入到nginx的谬误日记里
正在PHP 5.3.8及以前的版本中,经过FastCGI运转的PHP,正在用户拜访时呈现谬误,会起首写入到PHP的errorlog中
假如PHP的errorlog无奈写入,则会将谬误内容前往给FastCGI接口,而后nginx正在收到FastCGI的谬误前往跋文录到了nginx的errorlog中
正在PHP 5.3.9及之后的版本中,呈现谬误后PHP只测验考试写入PHP的errorlog中,假如失败则没有会再前往到FastCGI了,谬误日记会输入到php-fpm的谬误日记里。
以是假如想把php谬误日记输入到nginx谬误日记,需求应用php5.3.8以前的版本,而且设置装备摆设文件中php的error_log关于php worker过程不成写。

更多PHP相干常识,请拜访PHP中文网!

以上就是nginx php-fpm 输入php谬误日记的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 php-fpm nginx

抱歉,评论功能暂时关闭!