nginx与apache不同,在apache中能够直接指定php的错误日志,那样在php执行中的错误信息就直接输入到php的错误日志中,能够方便查询。
在nginx中事情就变成了这样:nginx只对页面的访问作access记录日志。不会有php的error log 信息。nginx把对php的请求发给php-fpm fastcgi进程来处理,默认的php-fpm只会输出php-fpm的错误信息,在php-fpm的errors log里也看不到php的errorlog。www.cdxsxbx.com
缘由是php-fpm的配置文件php-fpm.conf中默认是关闭worker进程的错误输出,直接把他们重定向到/dev/null,因此咱们在nginx的error log 和php-fpm的errorlog都看不到php的错误日志。
因此咱们要进行以下的设置就能查看到nginx下php-fpm不记录php错误日志的方法php
修改 php-fpm.conf 文件,添加(或修改)以下配置:
[global]
error_log = log/error_lognginx
[www]
catch_workers_output = yes
修改 php.ini 文件,添加(或修改)以下配置:
log_errors = On
error_log = "/usr/local/lnmp/php/var/log/error_log"
error_reporting=E_ALL&~E_NOTICE
重启 php-fpm
经查log_errors= On,据官方的说法,当这个log_errors设置为On,那么必须指定error_log文件,若是没指定或者指定的文件没有权限写入,那么照样会输出到正常的输出渠道,那么也就使得display_errors 这个指定的Off失效,错误信息仍是打印了出来。因而将log_errors = Off,问题就解决了。
apache