nginx 錯誤日誌 沒有記錄 PHP錯誤的原因

2021-06-09 16:27:37 字數 726 閱讀 2435

事情是這樣子的:

前一段時間,**php出錯後,具體的錯誤資訊,沒有顯示出來,以為是輸出到nginx的錯誤日誌裡了,但是nginx的錯誤日誌沒有php的錯誤資訊,只有一些系統錯誤。

搞了很久,最後是通過改php-fpm.conf 配置,將php錯誤直接輸出在瀏覽器裡。

一開始我是改php.ini 裡 的:

display_errors=on

但是沒有效果。後來測試,原來是php-fpm.conf裡的配置會覆蓋php.ini。這個只能在php-fpm.conf裡改。

但是我想不明白 為什麼nginx裡的錯誤日誌 沒有記錄php的,且php出錯時返回的http狀態碼是200,而不是500?

後來我整理了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了

我用的是5.2版本,那就是 php輸出的錯誤日誌 給其他應用截斷了,造成錯誤資訊 沒有輸出到nginx的錯誤日誌裡

經過驗證,原來是給xdebug截斷了,關掉xdebug,日誌恢復正常,php出錯也是顯示500了。

nginx錯誤日誌級別

在配置nginx.conf 的時候,有一項是指定錯誤日誌的,預設情況下你不指定也沒有關係,因為nginx很少有錯誤日誌記錄的。但有時出現問題時,是有必要記錄一下錯誤日誌的,方便我們排查問題。error log 級別分為 debug,info,notice,warn,error,crit 預設為cri...

nginx訪問日誌沒有內容

今天處理乙個nginx 版本nginx 1.8.0.tar.gz 的問題,訪問 的時候沒有日誌輸出,同樣部署兩台機器,配置一樣,一台有日誌,一台沒有日誌,很奇怪,分析下配置檔案,nginx開啟了zip壓縮,嘗試注釋下,重啟nginx,訪問日誌出現了,啟用zip壓縮 解決方法 將 error log ...

nginx錯誤日誌error log日誌級別

在配置nginx.conf 的時候,有一項是指定錯誤日誌的,預設情況下你不指定也沒有關係,因為nginx很少有錯誤日誌記錄的。但有時出現問題時,是有必要記錄一下錯誤日誌的,方便我們排查問題。error log 級別分為 debug,info,notice,warn,error,crit 預設為cri...