Gestion des erreurs en PHP

Gestion des erreurs en PHPA l'occasion de l'utilisation de WampServer, j'ai dû revoir sérieusement ma copie sur la gestion des erreurs en PHP.

Désactiver XDEBUG dans WampServer

WampServer embarque avec lui l'application XDEBUG. Pour que le PHP retrouve un comportement "normal" (un peu comme notre Président Pépère), vous devez la désactiver en éditant le fichier php.ini en commentant la ligne suivante :

;zend_extension = "c:/wamp/bin/php/php5.4.3/zend_ext/php_xdebug-2.2.0-5.4-vc9-x86_64.dll"

Les directives PHP de la gestion d'erreur

Le comportement du PHP en termes de gestion d'erreur se règle au travers du fichier php.ini (en hébergement dédié) ou du fichier .htaccess (pour tout type d'hébergement). A la racine de votre site Web, ajoutez au fichier .htaccess les directives suivantes :

php_flag display_errors Off
php_flag track_errors On
php_flag log_errors On
php_value error_log ./php_errors.log

L'intérêt de ce réglage est de disposer d'un fichier d'erreurs consigné dans le répertoire courant où s'exécutent vos différents scripts PHP.

Un peu de code PHP

L'instruction error_reporting(0) désactive l'affichage des messages d'erreur ! Sachez qu'elle fait double emploi avec la directive display_errors Off introduite dans le fichier .htaccess. Pour récupérer l'erreur, utilisez l'instruction error_get_last() ou $php_errormsg si vous avez activé préalablement la directive track_errors. L'instruction throw new Exception('...') provoque l'exception qui sera interceptée dans le bloc catch{...}.

<?php
    error_reporting(0);
    try
    {
        $a=1/0;
        if(error_get_last())
        {
            throw new Exception('Division par zéro = la tête à toto !');
        }
        //si track_errors à On
        /*
        if($php_errormsg)
        {
            throw new Exception('Division par zéro = la tête à toto !');
        }   
         */         
    }
    catch(Exception $e)
    {
        echo $e->getCode().'<br/>';
        echo $e->getMessage().'<br/>';            
        echo $e->getLine().'<br/>';            
        echo $e->getFile().'<br/>';
    }      
?>

Références

Dsfc Dsfc

Gestion des erreurs en PHP
5 votes, 5.00 avg. rating (98% score)
Tags : , , , , , , , , , ,
Commentaires

Pas encore de commentaire.

Laisser un commentaire

(requis)

(requis)


*