程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 修改php.ini以達到屏蔽錯誤信息並記錄日志

修改php.ini以達到屏蔽錯誤信息並記錄日志

編輯:PHP綜合
那是因為php.ini中關閉了錯誤顯示,將錯誤寫成了文件,這是人為設置的結果,display_errors =on就好了。
不過不顯示錯誤倒安全點,建議調試時打開,然後提供服務時關閉。

提供一點資料給你:

display_errors = On

php缺省是打開錯誤信息顯示的,我們把它改為:

display_errors = Off

關閉錯誤顯示後,php函數執行錯誤的信息將不會再顯示給用戶,這樣能在一定程度上防止攻擊者從錯誤信息得知腳本的物理位置,以及一些其它有用的信息,起碼給攻擊者的黑箱檢測造成一定的障礙。這些錯誤信息可能對我們自己有用,可以讓它寫到指定文件中去,那麼修改以下:

log_errors = Off

改為:

log_errors = On

以及指定文件,找到下面這行:

;error_log = filename

去掉前面的;注釋,把filename改為指定文件,如/usr/local/apache/logs/php_error.log

error_log = /usr/local/apache/logs/php_error.log

這樣所有的錯誤都會寫到php_error.log文件裡。

====================================

error_reporting
配置錯誤信息回報的等級。
語法: int error_reporting(int [level]);
返回值: 整數
函數種類: PHP 系統功能

本函數用來配置錯誤信息回報的等級,參數 level 是一個整數的位遮罩 (bitmask),見下表。
遮罩值 表示名稱
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING

E_NOTICE 表示一般情形不記錄,只有程序有錯誤情形時才用到,例如企圖存取一個不存在的變量,或是呼叫 stat() 函數檢視不存在的文件。
E_WARNING 通常都會顯示出來,但不會中斷程序的執行。這對除錯很有效。例如:用有問題的正則表達式呼叫 ereg()。
E_ERROR 通常會顯示出來,亦會中斷程序執行。意即用這個遮罩無法追查到內存配置或其它的錯誤。
E_PARSE 從語法中解析錯誤。
E_CORE_ERROR 類似 E_ERROR,但不包括 PHP 核心造成的錯誤。
E_CORE_WARNING 類似 E_WARNING,但不包括 PHP 核心錯誤警告。
————————————
額外:
1.
php文件中
error_reporting(7) 其中的7 就是 1+2+4,也就是回報 1 E_ERROR 2 E_WARNING 4 E_PARSE
2.
php.ini中
display_errors = Off //默認是關閉錯誤提示
error_reporting = E_ALL //顯示從不良編碼實踐到無害提示到出錯的所有信息,由於回報的信息太細化了,包括了無害信息,為了在開發過程中能看到實際的提示,建議配置為 error_reporting = E_ALL & ~E_NOTICE
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved