PHP錯誤設置

display_errors
錯誤回顯,通常經常使用語開發模式,可是不少應用在正式環境中也忘記了關閉此選項。錯誤回顯能夠暴露出很是多的敏感信息,爲攻擊者下一步攻擊提供便利。推薦關閉此選項。
display_errors = On
開啓狀態下,若出現錯誤,則報錯,出現錯誤提示
dispaly_errors = Off
關閉狀態下,若出現錯誤,則提示:服務器錯誤。可是不會出現錯誤提示php

 

程序中設置:服務器

ini_set('display_errors', 1); //設置開啓錯誤提示函數

error_reporting(E_ALL & ~E_NOTICE); 或error_reporting(E_ALL ^ E_NOTICE);

php.ini設置:spa

display_errors = Off操作系統

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT日誌

log_errors
在正式環境下用這個就好了,把錯誤信息記錄在日誌裏。正好能夠關閉錯誤回顯。code

log_errors = On
error_log = /var/log/php-error.log開發

另外也能夠設定error_log = syslog,使這些錯誤信息記錄到操做系統的日誌裏。字符串

//建立log目錄  
$destination = 'imember_'.to_date(get_gmtime(),"Ym");//建立錯誤日誌保存路徑  
if (!is_dir("D:/wamp/logs/".$destination)) {  
    @mkdir("D:/wamp/logs/".$destination);  
    @chmod("D:/wamp/logs/".$destination, 0777);  
}  
  
//im:記錄php錯誤日誌  
ini_set("display_errors",0);//不在頁面顯示錯誤信息  
error_reporting(E_ALL ^ E_NOTICE);//記錄錯誤日誌的級別  
ini_set( "log_errors", "On" );//打開錯誤日誌  
ini_set( "error_log",  "D:/wamp/logs/".$destination."/".date('d').".log");//設置保存錯誤日誌的地址


有關error_reporting()函數:

error_reporting() 設置 PHP 的報錯級別並返回當前級別。

; 錯誤報告是按位的。或者將數字加起來獲得想要的錯誤報告等級。
; E_ALL - 全部的錯誤和警告
; E_ERROR - 致命性運行時錯
; E_WARNING - 運行時警告(非致命性錯)
; E_PARSE - 編譯時解析錯誤
; E_NOTICE - 運行時提醒(這些常常是是你的代碼的bug引發的,

;也多是有意的行爲形成的。(如:基於未初始化的變量自動初始化爲一個
              ;空字符串的事實而使用一個未初始化的變量)

; E_CORE_ERROR - 發生於PHP啓動時初始化過程當中的致命錯誤
; E_CORE_WARNING - 發生於PHP啓動時初始化過程當中的警告(非致命性錯)
; E_COMPILE_ERROR - 編譯時致命性錯
; E_COMPILE_WARNING - 編譯時警告(非致命性錯)
; E_USER_ERROR - 用戶產生的出錯消息
; E_USER_WARNING - 用戶產生的警告消息
; E_USER_NOTICE - 用戶產生的提醒消息

使用方法:

error_reporting(0);//禁用錯誤報告
error_reporting(E_ALL ^ E_NOTICE);//顯示除去 E_NOTICE 以外的全部錯誤信息
error_reporting(E_ALL^E_WARNING^E_NOTICE);//顯示除去E_WARNING E_NOTICE 以外的全部錯誤信息
error_reporting(E_ERROR | E_WARNING | E_PARSE);//顯示運行時錯誤,與error_reporting(E_ALL ^ E_NOTICE);效果相同。error_reporting(E_ALL);//顯示全部錯誤get

相關文章
相關標籤/搜索