Nel mio progetto di errore per catturare tutti gli errori PHP che ho impostato la mia errore meccanismo di gestione come segue:manipolazione in codeigniter
- ho impostato
error_reporting()
inindex.php
di file che sostituisce nulla nel filephp.ini
- un gestore di errori si trova in
system/codeigniter/CodeIgniter.php
utilizzandoset_error_handler
- questo gestore degli errori,_exception_handler
, è trova insystem/codeigniter/Common.php
- Il
_exception_handler
funzione ignoraE_STRICT
errori, chiama lashow_php_error
funzione dalla libreria di sistema eccezioni se la gravità è quella specificata dalla funzioneerror_reporting()
inindex.php
e registra l'errore in base a tutto ciò che è stato impostato nelconfig.php
file di - Il gestore restituisce
FALSE
quindi, dopo questo PHP, continua a gestire l'errore ma normalmente corrisponde all'impostazione livello edisplay_errors
.
La cosa che mi è sconcertante è che E_ERROR
errori ossia errori fatali non sembrano essere essere stato catturato da _exception_handler
a tutti. Non è solo che non viene chiamato il numero show_php_error
, sembra proprio che la funzione non venga chiamata per loro. Questo è ovviamente un problema in quanto significa che non vengono gestiti da show_php_error
o registrati. Ad esempio se ho intenzionalmente digitato in modo errato lo $this->load->views('foo');
in un controller, il gestore non viene chiamato.
Qualsiasi suggerimento sulla gestione degli errori sarebbe molto apprezzato, grazie!
Penso che potrebbe essere un problema con PHP stesso senza essere in grado di testarlo. Se vedi http://www.php.net/manual/en/function.error-reporting.php # 70126 vedrai che in questo caso, un E_ERROR provoca un effetto simile a quello che farebbe E_PARSE. – David
quale ambiente stai usando? – bottleboot