第一種方法:在php.ini檔案裡改變display_errors和error_reporting的值,沒有的直接加上
display_errors = Onerror_reporting = E_ALL | E_STRICT
然後:重啟apache,結束。(有多個php版本的話,可能失敗,原因請看第二種方法的解釋)
解釋:
display_errors 錯誤回顯,一般常用語開發模式,但是很多應用在正式環境中也忘記了關閉此選項。錯誤回顯可以暴露出非常多的敏感資訊,為攻擊者下一步攻擊提供便利。推薦關閉此選項。
display_errors = On 開啟狀態下,若出現錯誤,則報錯,出現錯誤提示
dispaly_errors = Off 關閉狀態下,若出現錯誤,則提示:伺服器錯誤。但是不會出現錯誤提示
error_reporting 可以設定的參數,如下: 錯誤報表是位欄位。可以將數字加起來得到想要的錯誤報表等級。 E_ALL – 所有的錯誤和警告(不包括 E_STRICT) E_ERROR – 致命性的執行階段錯誤 E_WARNING – 運行時警告(非致命性錯誤) E_PARSE – 編譯時間解析錯誤 E_NOTICE – 運行時提醒(這些經常是你代碼中的bug引起的,也可能是有意的行為造成的。) E_STRICT – 編碼通訊協定化警告,允許PHP建議如何修改代碼以確保最佳的互通性向前相容性。 E_CORE_ERROR – PHP啟動時初始化過程中的致命錯誤 E_CORE_WARNING – PHP啟動時初始化過程中的警告(非致命性錯) E_COMPILE_ERROR – 編譯時間致命性錯 E_COMPILE_WARNING – 編譯時間警告(非致命性錯) E_USER_ERROR – 使用者自訂的錯誤訊息 E_USER_WARNING – 使用者自訂的警告訊息 E_USER_NOTICE – 使用者自訂的提醒訊息
第二種方法:在Apache的 httpd.conf檔案裡加上下面兩句
php_flag display_errors onphp_value error_reporting 2039
然後:重啟apache,結束。
解釋:
依賴於 Apache 正在做的工作,在 PHP 中開啟錯誤報表可能沒法工作,因為在電腦上可能有多個 PHP 版本。
有時很難區分 Apache 正在使用哪個 PHP 版本,因為 Apache 只能查看一個 php.ini 檔案。
不知道 Apache 正在使用哪個 php.ini 檔案配置自己是一個安全問題。
但是,有一種方法可以在 Apache 中配置 PHP 變數,從而保證設定了正確的出錯層級。而且,最好知道如何在伺服器端設定這些組態變數,以否決或搶佔 php.ini 檔案,從而提供更進階別的安全性。要做在 php.ini 檔案中已經做過的事,請把下列各行添加到 httpd.conf,覆蓋任何 php.ini 檔案:php_flag display_errors on php_value error_reporting 2039 這會覆蓋在 php.ini 檔案中為 display_errors 已經設定的標誌,以及 error_reporting 的值。
值 2039 代表 E_ALL & ~E_NOTICE。
如果願意採用 E_ALL,請把值設為 2047。
共勉~