1. 程式人生 > >開啟php錯誤日誌

開啟php錯誤日誌

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。
原因是php-fpm的配置檔案php-fpm.conf中預設是關閉worker程序的錯誤輸出,直接把他們重定向到/dev/null,所以我們在nginx的error log 和php-fpm的errorlog都看不到php的錯誤日誌。
所以我們要進行如下的設定就能檢視到nginx下php-fpm不記錄php錯誤日誌的方法

  1. 修改 php-fpm.conf 檔案,新增(或修改)如下配置:
  [global]
  error_log = log/error_log

  [www]
  catch_workers_output = yes
  1. 修改 php.ini 檔案,新增(或修改)如下配置:
  log_errors = On
  error_log = "/usr/local/lnmp/php/var/log/error_log"
  error_reporting=E_ALL&~E_NOTICE
  1. 重啟 php-fpm

經查log_errors= On,據官方的說法,當這個log_errors設定為On,那麼必須指定error_log檔案,如果沒指定或者指定的檔案沒有許可權寫入,那麼照樣會輸出到正常的輸出渠道,那麼也就使得display_errors 這個指定的Off失效,錯誤資訊還是列印了出來。於是將log_errors = Off,問題就解決了。