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"中了
請注意:
php-fpm.conf 中的php_admin_value[error_log] 引數 會覆蓋php.ini中的 error_log 引數
所以確保你在phpinfo()中看到的最終error_log檔案具有可寫許可權並且沒有設定php_admin_value[error_log] 引數,否則錯誤日誌會輸出到php-fpm的錯誤日誌裡。
找不到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);
nginx php fpm 輸出php錯誤日誌
nginx是乙個web伺服器,因此nginx的access日誌只有對訪問頁面的記錄,不會有php 的 error log資訊。nginx把對php的請求發給php fpm fastcgi程序來處理,預設的php fpm只會輸出php fpm的錯誤資訊,在php fpm的errors log裡也看不到...
nginx php fpm 輸出php錯誤日誌
nginx是乙個web伺服器,因此nginx的access日誌只有對訪問頁面的記錄,不會有php 的 error log資訊。nginx把對php的請求發給php fpm fastcgi程序來處理,預設的php fpm只會輸出php fpm的錯誤資訊,在php fpm的errors log裡也看不到...
php fpm開啟錯誤日誌的配置
nginx與apache不一樣,在apache中可以直接指定php的錯誤日誌,那樣在php執行中的錯誤資訊就直接輸入到php的錯誤日誌中,可以方便查詢。在nginx中事情就變成了這樣 nginx只對頁面的訪問做access記錄日誌。不會有php的error log 資訊。nginx把對php的請求發...