header location et error_log
Bonjour à tous,
Je suis en train de faire mon petit système de gestion d'erreurs php, par le biais d'une fonction bien connue:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
function error_handler($error_type, $string_error, $file_error, $line_error)
{
$date = date('d/m/Y - H:i:s');
$return_error = $date.": " ;
switch($error_type)
{
case E_USER_ERROR:
$return_error .= "Erreur fatale : ".$string_error ;
$return_error .= " Dans le fichier : '".$file_error."', à la ligne ".$line_error." \n" ;
break ;
case E_USER_WARNING:
$return_error .= "Avertissement : ".$string_error ;
$return_error .= " Dans le fichier : '".$file_error."', à la ligne ".$line_error." \n" ;
break ;
//dans le cas ou une erreur est déclenché volontairement
/*
trigger_error() nécessite 2 arguments :
le message d'erreur ;
le type d'erreur (optionnel, par défaut E_USER_NOTICE).
*/
case E_USER_NOTICE:
$return_error .= "Note : ".$string_error ;
$return_error .= " Dans le fichier : '".$file_error."', à la ligne ".$line_error." \n" ;
break ;
default:
$return_error .= "Erreur inconnue [".$error_type."] : ".$string_error ;
$return_error .= " Dans le fichier : '".$file_error."', à la ligne ".$line_error." \n" ;
break ;
}
error_log($return_error, 3, "error/error.log");
header("location:error_page.php") ;
exit() ;
}
set_error_handler('error_handler') ; |
Dans le cas ou surviendrait une erreur php au cours d'un processus, j'enregistre un message d'erreur dans un fichier .log et je redirige vers une page d'erreur.
Quand une erreur survient dans une page ou il n'y a que du php, pas de problème la fonction exécute ce qui lui est demandé, mais dans le cas ou une erreur survient dans une page ou se mélange html, javascript et php, j'ai le droit au classique : "Cannot modify header information...."
Comment puis-je gérer cette réaction pour le moins normale sans trop de complication mis à part avec une tamporisation de sortie ?
Merci à tous pour vos réponses:)!