http://bbs.phpchina.com/thread-274514-1-1.htmlphp
index.php ,這是CodeIgniter的入口文件,作開發是,都會設置一下
define('ENVIRONMENT', 'development');
用來區分線上和線下環境,可是在這裏html
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.'); } }
CodeIgniter會判斷一下,若是是production,它會將error_reporting設置爲0,這會致使全部的錯誤都不記錄php_error.log,可是error.log是咱們發現bug和解決問題的重要依據。
因此,根據咱們本身的經驗,建議CodeIgniter用戶將error_reporting(0),這段代碼刪掉,並將php.ini的
error_reporting=E_ALL&~E_NOTICE
display_errors = Off
若是你不能操做ini,那麼就app
if (defined('ENVIRONMENT')) { switch (ENVIRONMENT) { case 'development': error_reporting(E_ALL); break; case 'testing': case 'production': error_reporting(E_ALL ^ E_NOTICE); ini_set('display_errors','0'); break; default: exit('The application environment is not set correctly.'); } }
這樣你的程序錯誤就不會暴漏給用戶,而且會記錄在php_error.log中,可是即便這樣,依然會有一些錯誤會暴漏出來,這就涉及到CodeIgniter另外的坑。
原文連接
h5b.net/codeigniter-php_error-logcodeigniter