nginx開啟PHP錯誤日誌

2021-07-11 22:35:25 字數 1884 閱讀 7522

<?php

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的錯誤日誌。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"

中了請注意

:1. php-fpm.conf 中的php_admin_value[error_log] 引數 會覆蓋php.ini中的 error_log 引數

所以確保你在

phpinfo()中看到的最終error_log檔案具有可寫許可權並且沒有設定php_admin_value[error_log] 引數

,否則錯誤日誌會輸出到php-fpm的錯誤日誌裡。2.

找不到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);

4.如何將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了

,錯誤日誌會輸出到php-fpm的錯誤日誌裡

。所以如果想把php錯誤日誌輸出到nginx錯誤日誌

,需要使用php5.3.8

之前的版本

,並且配置檔案中php的error_log對於php worker程序不可寫

?>

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

事情是這樣子的 前一段時間,php出錯後,具體的錯誤資訊,沒有顯示出來,以為是輸出到nginx的錯誤日誌裡了,但是nginx的錯誤日誌沒有php的錯誤資訊,只有一些系統錯誤。搞了很久,最後是通過改php fpm.conf 配置,將php錯誤直接輸出在瀏覽器裡。一開始我是改php.ini 裡 的 di...

開啟php fpm php錯誤日誌

進行如下的設定就能檢視到nginx下php fpm不記錄php錯誤日誌的方法 1,修改php fpm.conf中的配置,如果沒有請增加 複製 如下 global error log log php error log www catch workers output yes 2.修改php.ini中...

php錯誤日誌

對於php開發者來說,一旦某個產品投入使用,應該立即將display errors選項關閉,以免因為這些錯誤所透露的路徑 資料庫連線 資料表等資訊而遭到黑客攻擊。但是,任何乙個產品在投入使用後,都難免會有錯誤出現,那麼如何記錄一些對開發者有用的錯誤報告呢?我們可以在單獨的文字檔案中將錯誤報告作為日誌...