Aller au contenu

Personnaliser les messages d'erreurs


Sujets conseillés

Posté (modifié)

Bonjour,

Je souhaite mettre un gestionnaire d'erreurs personnalisé en place, et je bloque sur certains points...

Par soucis de simplicité, j'ai simplifié mon code, qui normalement ajoute les données dans une base (cette partie fonctionne).

<?php  
function GestionErreur($code, $msg, $file, $line)
{
$heureBug = date("h:i:s");
$urlbug = $_SERVER['SCRIPT_URI'];

$verifErreur = mysql_query('SELECT id FROM GestionErreurs WHERE lien="'.$urlbug.'" AND fichier="'.$file.'" AND ligne="'.$line.'"');

if($errno == 'E_NOTICE' || $errno == 'E_USER_NOTICE')
{
$Niveau = 'Basse';
echo"basse";
}
if($errno == 'E_ERROR' || $errno == 'E_CORE_ERROR' || $errno == 'E_COMPILE_ERROR' || $errno == 'E_USER_ERROR')
{
$Niveau = 'Haute';
echo"haut";
}
if($errno == 'E_WARNING' || $errno == 'E_PARSE' || $errno == 'E_CORE_WARNING' || $errno == 'E_COMPILE_WARNING' || $errno == 'E_USER_WARNING')
{
$Niveau = 'Moyenne';
echo"moyenne";
}
if($Niveau == '')
{
$Niveau = 'Inconnu';
echo"inconnu";
}

echo'Priorité:'.$Niveau;

// Arret execution du script
die();
}

// On définit notre gestionnaire d'erreur personnalisé
set_error_handler('GestionErreur');
?>

Le problème rencontré est celui de définir le niveau d'alerte pour le bug.

Par exemple, j'ai généré volontairement une erreur E_USER_NOTICE: "Undefined index:nomSiteJeux", ou indiqué une variable n'existant pas..et cela m'indique tout le temps: Priorité Inconnu! ...Alors qu'a priori ce serait "Basse".

De plus, si j'oubli par exemple un point virgule, cela me renvoie:

Parse error: syntax error, unexpected T_VARIABLE in /home/www/503c69a9a240068c8059ec652aefc53b/web/liste-des-jeux.php on line 115

Pourtant en début de page j'ai mis error_reporting(0); ! Pourquoi me renvoie t-il l'erreur? S'agit t'il d'un autre type d'erreur?

Merci

Modifié par Monique
Merci d'utiliser codebox pour plus de 10 lignes de code :)
Posté

Hello,

ta variable $errno n'est initialisée nul-part, tu ne te serais pas trompé ?

Sinon en passant :

- un switch / case serait probablement plus parlant pour tes conditions sur $errno

- le error_reporting n'est appelé que si le code est exécuté, ce qui n'est pas le cas lors d'un parse error

- de manière générale error_reporting(0) est fortement déconseillé. Il vaut mieux privilégier un error_reporting(E_ALL) voir error_reporting(E_ALL | E_STRICT) mais par contre en désactiver l'affichage via display_errors tout en activant le traçage dans des logs.

Posté

Effectivement j'avais fait une erreur de frappe :)

Si je comprends bien, il vaut mieux mettre au début des pages php : error_reporting(E_ALL).

Mais je ne comprends pas comment désactiver l'affichage des erreurs via display_errors et comment activer le tracage dans des logs...

Je suis en hébergement mutualisé chez infomaniak...comment faire? c'est avec un htaccess?

Posté

Je ne connais pas les spécificités de l'hébergement infomaniak, fournissent ils un quelconque moyen de changer la configuration de PHP ? La méthode par htaccess ne fonctionne généralement qu'avec la version module de PHP.

Sinon il reste la méthode ini_set(), mais ça ne fonctionnera pas pour les erreurs de syntaxe par exemple.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...