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