Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/09/2006, 00h27   #1
Membre éprouvé
 
Avatar de gtraxx
 
Homme Aurélien Gérits
Développeur Web
Inscription : mai 2006
Messages : 1 045
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Gérits
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2006
Messages : 1 045
Points : 498
Points : 498
Par défaut gestion des erreurs

Bonjour a tous , pour le moment je me fais un pti site en php avec pas mal de chose .
etant donnée que je n'aimerai pas que mes visiteurs voyent d'eventuelle message d'erreurs je me demandais comment faire pour que les message d'erreurs ne sois pas vu mais ecris dans un fichiers texte par exemple ???
je comprend bien le php mais pour ce genre de chose pas tres repandue je donne ma langue au chat .
j'ai vu 1 ou 2 script pour gerer l'affichage d'erreur mais il etais tres mauvais et incomprehensible .
Donc je me réfère a vous , ce site est une veritable réference .
Donc si vous savez me conseiller sur le sujet
merci a vous
gtraxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 01h57   #2
Membre Expert
 
Avatar de trattos
 
Inscription : juillet 2003
Messages : 1 005
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2003
Messages : 1 005
Points : 1 022
Points : 1 022
Ben fait en sorte d'enregistrer ce message d'erreur dans ta base de données comme ça tu peux tout récupérer et ça reste transparant pour tes visiteurs.
trattos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 10h21   #3
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Bientôt sur ce merveilleux site, un magnifique tuto sur la gestion des erreurs...

En attendant tu peux par exemple utiliser les outils suivants : error_reporting pour fixer le niveau des erreurs à considérer, set_error_handler pour utiliser des gestionnaires d'erreur personnalisés, ou alors tu peux modifier dans ton php.ini la clé log_errors (c'est sans doute ça que tu veux faire).
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 10h46   #4
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 24
Points : 16
Points : 16
Avec display_errors = 0 bien entendu
BoneBreaker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 11h04   #5
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par BoneBreaker
Avec display_errors = 0 bien entendu
Ca ne logge pas les erreurs, si je ne m'abuse, mais oui ça évite l'affichage.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h49   #6
Membre éprouvé
 
Avatar de gtraxx
 
Homme Aurélien Gérits
Développeur Web
Inscription : mai 2006
Messages : 1 045
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Gérits
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2006
Messages : 1 045
Points : 498
Points : 498
merci a vous je vais jeter un oeil a la doc , j'ai vu qu'il y avais un exemple qui n'est pas mal du tout mais un peut compliquer au premier abort .
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
// Nous allons faire notre propre gestion
error_reporting(0);
 
// Fonction spéciale de gestion des erreurs
function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
{
   // Date et heure de l'erreur
   $dt = date("Y-m-d H:i:s (T)");
 
   // Définit un tableau associatif avec les chaînes d'erreur
   // En fait, les seuls niveaux qui nous interessent
   // sont E_WARNING, E_NOTICE, E_USER_ERROR,
   // E_USER_WARNING et E_USER_NOTICE
   $errortype = array (
               E_ERROR              => 'Erreur',
               E_WARNING            => 'Alerte',
               E_PARSE              => 'Erreur d\'analyse',
               E_NOTICE            => 'Note',
               E_CORE_ERROR        => 'Core Error',
               E_CORE_WARNING      => 'Core Warning',
               E_COMPILE_ERROR      => 'Compile Error',
               E_COMPILE_WARNING    => 'Compile Warning',
               E_USER_ERROR        => 'Erreur spécifique',
               E_USER_WARNING      => 'Alerte spécifique',
               E_USER_NOTICE        => 'Note spécifique',
               E_STRICT            => 'Runtime Notice',
               E_RECOVERABLE_ERRROR => 'Catchable Fatal Error'
               );
   // Les niveaux qui seront enregistrés
   $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
 
   $err = "<errorentry>\n";
   $err .= "\t<datetime>" . $dt . "</datetime>\n";
   $err .= "\t<errornum>" . $errno . "</errornum>\n";
   $err .= "\t<errortype>" . $errortype[$errno] . "</errortype>\n";
   $err .= "\t<errormsg>" . $errmsg . "</errormsg>\n";
   $err .= "\t<scriptname>" . $filename . "</scriptname>\n";
   $err .= "\t<scriptlinenum>" . $linenum . "</scriptlinenum>\n";
 
   if (in_array($errno, $user_errors)) {
       $err .= "\t<vartrace>".wddx_serialize_value($vars,"Variables")."</vartrace>\n";
   }
   $err .= "</errorentry>\n\n";
 
   // sauvegarde de l'erreur, et mail si c'est critique
   error_log($err, 3, "/usr/local/php4/error.log");
   if ($errno == E_USER_ERROR) {
       mail("phpdev@example.com","Critical User Error",$err);
   }
}
 
 
function distance($vect1, $vect2)
{
   if (!is_array($vect1) || !is_array($vect2)) {
       trigger_error("Incorrect parameters, arrays expected", E_USER_ERROR);
       return NULL;
   }
 
   if (count($vect1) != count($vect2)) {
       trigger_error("Vectors need to be of the same size", E_USER_ERROR);
       return NULL;
   }
 
   for ($i=0; $i<count($vect1); $i++) {
       $c1 = $vect1[$i]; $c2 = $vect2[$i];
       $d = 0.0;
       if (!is_numeric($c1)) {
           trigger_error("Coordinate $i in vector 1 is not a number, using zero",
                           E_USER_WARNING);
           $c1 = 0.0;
       }
       if (!is_numeric($c2)) {
           trigger_error("Coordinate $i in vector 2 is not a number, using zero",
                           E_USER_WARNING);
           $c2 = 0.0;
       }
       $d += $c2*$c2 - $c1*$c1;
   }
   return sqrt($d);
}
 
$old_error_handler = set_error_handler("userErrorHandler");
 
// constante non définie, qui génère une alerte
$t = I_AM_NOT_DEFINED;
 
// définition de quelques vecteurs
$a = array (2, 3, "foo");
$b = array (5.5, 4.3, -1.6);
$c = array (1, -3);
 
// génère une erreur utilisateur
$t1 = distance ($c, $b)."\n";
 
// génère une erreur utilisateur
$t2 = distance ($b, "i am not an array")."\n";
 
// Génère une alerte
$t3 = distance ($a, $b)."\n";
 
?>
je ne comprend pas trop cette ligne :
Code :
1
2
3
4
5
// sauvegarde de l'erreur, et mail si c'est critique
   error_log($err, 3, "/usr/local/php4/error.log");
   if ($errno == E_USER_ERROR) {
       mail("phpdev@example.com","Critical User Error",$err);
   }
error_log sauvegarde l'erreur dans le dossier indiquer ou c'est un dossier par default ou se trouve apache ?
desolé si je m'exprime mal , faut le temps que la piece tombe lol

Eusebius vous m'avez fais rire avec cette phrase :

Citation:
Bientôt sur ce merveilleux site, un magnifique tuto sur la gestion des erreurs...
gtraxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h28.


 
 
 
 
Partenaires

Hébergement Web