在php學習中error_reporting和display_errors是兩個非常重要的參數,我們在學習調試過程中是少不了它們的,開啟與關閉這兩個錯誤日志非常的簡單只要在php.ini簡單處理即可,下文會有介紹.
我們知道產品的生產環境肯定是不給予顯示錯誤的,于是,php.ini中將 display_errors = Off 改為display_errors = On,或者 ini_set('display_errors',0);
其次,我們知道php的錯誤級別是由error_reporting【error_reporting詳細教程】控制的,但是有很多人在生產環境關閉了錯誤信息提示:error_reporting(0);
其實這種做法,我覺得不科學,在codeigniter框架就是這樣,代碼如下:
- if (defined('ENVIRONMENT'))
- {
- switch (ENVIRONMENT)
- {
- case 'development':
- error_reporting(E_ALL);
- break;
- case 'testing':
- case 'production':
- error_reporting(0);
- break;
- default:
- exit('The application environment is not set correctly.');
- }
- }
線上的錯誤信息肯定是要記錄的,error_reporting(0)這樣會導致所有的錯誤信息不會記錄,應該:error_reporting = E_ALL & ~E_NOTICE,只要display_errors = Off,錯誤信息就不會再頁面上顯示,因為display_errors的優先級別更高.
特別要注意的是:如果php.ini中log_errors= On,據官方的說法,那么必須指定error_log文件,如果沒指定或者指定的文件沒有權限寫入,那么照樣會輸出到正常的輸出渠道,那么也就使得display_errors 這個指定的Off失效,錯誤信息還是打印了出來,將log_errors = Off就行了.
總結下,在生產環境中不現實錯誤信息還能記錄錯誤日志,代碼如下:
- /**
- * 記錄生產環境錯誤日志
- *
- * @link
- */
- error_reporting(E_ALL);
- ini_set('display_errors',0);
- ini_set('log_errors',1);
- ini_set('error_log','E:/'.date('Y-m-d').'_phpddt.com.txt');
新聞熱點
疑難解答