PHP教程
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的缺点日记里。
nginx php-fpm 输出php缺点日记-图片1
nginx php-fpm 输出php缺点日记-图片1
2.找不到php.ini地位,应用php的phpinfo()成果查看
nginx php-fpm 输出php缺点日记-图片2
nginx php-fpm 输出php缺点日记-图片2
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过程弗成写