<?phpnginx把對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選項關閉,以免因為這些錯誤所透露的路徑 資料庫連線 資料表等資訊而遭到黑客攻擊。但是,任何乙個產品在投入使用後,都難免會有錯誤出現,那麼如何記錄一些對開發者有用的錯誤報告呢?我們可以在單獨的文字檔案中將錯誤報告作為日誌...