生產環境下的錯誤日誌記錄

2021-07-10 07:07:23 字數 2297 閱讀 2564

display_errors

錯誤回顯,一般常用語開發模式,但是很多應用在正式環境中也忘記了關閉此選項。錯誤回顯可以暴露出非常多的敏感資訊,為攻擊者下一步攻擊提供便利。推薦關閉此選項。

display_errors = on

開啟狀態下,若出現錯誤,則報錯,出現錯誤提示

dispaly_errors = off

log_errors

在正式環境下用這個就行了,把錯誤資訊記錄在日誌裡。正好可以關閉錯誤回顯。

對於php開發人員來說,一旦某個產品投入使用,那麼第一件事就是應該將display_errors選項關閉,以免因為這些錯誤所透露的路徑、資料庫連線、資料表等資訊而遭到黑客攻擊。

某個產品投入使用後,難免會有錯誤資訊,那麼如何記錄這些對開發人員非常有用的資訊呢?

將php的log_errors開啟即可,預設是記錄到web伺服器的日誌檔案裡,比如apache的error.log檔案。

當然也可以記錄錯誤日誌到指定的檔案中。

複製**

**如下:

# vim /etc/php.inidisplay_errors = off

log_errors = on

error_log = /var/log/php-error.log

另外也可以設定error_log = syslog,使這些錯誤資訊記錄到作業系統的日誌裡。

display_errors = off //display中文意思是顯示所以display_error=off的意思就是不顯示錯誤了!

error_reporting 設定錯誤訊息回報的等級

2047我記得應該是e_all。

php.ini 檔案中有許多配置設定。您應當已經設定好自己的 php.ini 檔案並把它放在合適的目錄中,就像在 linux 上安裝 php 和 apache 2 的文件說明中所示的那樣(請參閱 參考資料)。在除錯 php 應用程式時,應當知道兩個配置變數。下面是這兩個變數及其預設值:

display_errors = off //關閉所有錯誤資訊,為on時為顯示所有錯誤資訊。

error_reporting = e_all

e_all能從不良編碼實踐到無害提示到出錯的所有資訊。e_all 對於開發過程來說有點太細,因為它在螢幕上為一些小事(例如變數未初始化)也顯示提示,會搞糟瀏覽器的輸出

所以不建議使用2047,最好把預設值改為:error_reporting = e_all & ~e_notice

php.ini中display_errors = off失效的解決

問題:

php設定檔案php.ini中明明已經設定display_errors = off,但是在執行過程中,網頁上還是會出現錯誤資訊。

解決:

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

經常見到error_reporting(7)直意為:設定錯誤訊息回報的等級。

value constant

1 e_error

2 e_warning

4 e_parse

8 e_notice

16 e_core_error

32 e_core_warning

64 e_compile_error

128 e_compile_warning

256 e_user_error

512 e_user_warning

1024 e_user_notice

2047 e_all

2048 e_strict

然而7=1+2+4

就是出錯時顯示1 e_error 2 e_warning 4 e_parse

複製**

**如下:

<?php

//禁用錯誤報告

error_reporting(0);

//報告執行時錯誤

error_reporting(e_error | e_warning | e_parse);

//報告所有錯誤

error_reporting(e_all);

?>

lnmp環境下日誌記錄

nginx 分為兩種形式 access log 記錄使用者 ip 訪問頁面以及其他資訊 error log 記錄伺服器錯誤資訊 預設安裝目錄 usr share nginx html nginx.conf apache windows中直接檢視apache根目錄下logs檔案中的httpd.conf...

PHP PHP在CLI環境下的錯誤日誌

1.display errors off 控制php是否輸出錯誤 在生產環境中輸出會洩露敏感資訊 建議記錄錯誤而不是將它們傳送到stdout off 不顯示任何錯誤 stderr 向stderr顯示錯誤 僅影響cgi cli on stdout 向stdout顯示錯誤 就是直接在螢幕列印錯誤 2.l...

實現錯誤日誌記錄

要實現錯誤日誌記錄,當有新的錯誤日誌產生時,能第一時間在新檔案中記錄下來。這裡以nginx錯誤日誌為例,內容如下 bin bash this script is used for log alertsa grep error usr local nginx logs error.log sort n...