Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo
Sommaire > Erreurs
        Erreur lors de l'affichage d'un élément d'un tableau ou d'une propriété d'un objet
        Comment empêcher l'affichage des erreurs PHP ?
        Pourquoi utilise-t-on @ devant une expression ?
        Comment simplifier la gestion des erreurs ?
        Pourquoi le message 'LDAP: Compare operation could not be completed' s'affiche ?
        Que veut dire 'Client does not support authentication protocol requested by server...' ?
        8.1. Comment corriger les erreurs ? (6)
                Explications et correction de l'erreur 'headers already sent'
                Explications et correction de l'erreur 'parse error'
                Explications et correction de l'erreur 'Use of undefined constant php'
                Explications et correction de l'erreur 'supplied argument is not a valid MySQL result resource'
                Explications et correction de l'erreur 'failed to open stream: Permission denied'
                Explication et correction de l'erreur 'Invalid argument supplied for foreach()'
        8.2. Exceptions(7)
                Où utiliser les exceptions ?
                Faut-il mettre des exceptions partout ?
                Une classe à vie, une classe par projet, une classe par page ou une classe par fonctionnalité ?
                Peut-on ajouter des méthodes supplémentaires ?
                Qu'est-ce que cette classe Exception que l'on utilise ?
                Comment utiliser les exceptions en PHP 5 ?
                A quoi servent les exceptions ?

precedent    sommaire    suivant   


Erreur lors de l'affichage d'un élément d'un tableau ou d'une propriété d'un objet
auteur : Cyberzoide
Par exemple, vous avez l'erreur typique suivante :
Parse error: parse error, expecting `T_STRING' in c:\program files\easyphp\www\monsite\mapage.php on line 17
(cette erreur ne survient pas avec les toutes dernières versions de PHP)

A cause d'un code du style suivant :
echo "Ma valeur = $myObj->myValue <br>";
ou
echo "Ma valeur = $myTab[$i] <br>";
Les variables incluses dans les chaînes délimitées par des doubles quotes " " sont interprétées par PHP, dans une certaine limite seulement. Dans le cas des variables comme "$i" ou "$foobar", PHP les interprète sans erreur. Mais dans le cas des variables complexes : tableau ou objet, il existe une ambiguïté dans la délimitation du nom de la variable. Par exemple "$tab[$i]" est interprété comme $tab et non pas comme $tab[$i] comme il le faudrait pourtant. Pour remédier à ce problème, il faut délimiter explicitement la totalité du nom de la variable grâce aux accolades {} : "${tab[$i]}" ou "{$tab[$i]}". Sinon, on peut aussi sortir la variable de la chaîne de caractères : "Ma valeur : ".$tab[$i]

Et pareil pour un objet :
echo "Ma valeur : ${myObj->myValue}";
ou
echo "Ma valeur : ".$myObj->myValue;

Comment empêcher l'affichage des erreurs PHP ?
auteur : Jérôme
PHP dispose pour cela de la fonction error_reporting() qui modifie la directive error_reporting pendant l'exécution du script. PHP possède plusieurs niveaux d'erreurs, utiliser cette fonction configure ce niveau pendant l'exécution du script. Pour cacher les erreurs à l'utilisateur, il est préférable de modifier le niveau d'error_reporting() à zéro pour les visiteurs
Pour cacher les erreurs à l'utilisateur
error_reporting(0);
et à E_ALL | E_STRICT pour les administrateurs
Pour réduire l'affichage des erreurs aux administrateurs
error_reporting(E_ALL); // PHP < 5
error_reporting(E_ALL | E_STRICT); // PHP >= 5
Vous pouvez obtenir la liste des constantes disponibles dans PHP sur cette page : Erreurs.
PS : Depuis PHP4 la configuration par défaut est E_ALL & ~E_NOTICE. C'est-à-dire que toutes les erreurs sauf les E_NOTICE sont affichées.


Pourquoi utilise-t-on @ devant une expression ?
auteurs : Forum PHP, Kerod
L'arobase (@) est un opérateur de contrôle d'erreur, c'est-à-dire que lorsqu'il est placé en préfixe d'une expression ou fonction PHP, les messages d'erreur qui peuvent être générés par cette expression ne seront pas affichés.
Toutefois, il est fortement conseillé de gérer les erreurs plutôt que de les cacher ainsi. Pour ce faire, il faut utiliser la fonction error_reporting()

lien : faq Comment empêcher l'affichage des erreurs PHP ?

Comment simplifier la gestion des erreurs ?
auteur : Gruik
Beaucoup de fonctions retournent FALSE en cas d'échec. Alors vous serez peut-être amené à tester le retour à l'aide d'un if :
if ($f = fopen ("pouet.txt", "r")) {
    //traitement normal
} else {
    //traitement de l'erreur
}
Cependant il est prévu en PHP un opérateur qui permet d'éxecuter une instruction si l'expression qui le précède est évaluée FAUX. Il s'agit de l'opérateur or.
Exemple :
$cx = mysql_connect(...) or die("Impossible de se connecter à la BD");
//Traitement normal si tout s'est bien passé
Une seule instruction est attendue apres l'opérateur or. Mais vous pouvez vous créer une fonction qui regroupera toutes les opérations que vous vouliez faire.


Pourquoi le message "LDAP: Compare operation could not be completed" s'affiche ?
auteur : BiD0uille
A l'utilisation des fonctions LDAP, PHP renvoie le message :
Warning: LDAP: Compare operation could not be completed: No such object in [...] on line nn
Cette erreur vient du fait que la chaîne qui précise le DN (qui signifie Distinguished Name) n'est pas bonne. Elle correspond à l'identifiant d'une entrée de l'annuaire LDAP et se doit d'être unique. Pour vérifier cela et spécifier un DN correct, il suffit d'utiliser un client LDAP comme JXplorer.


Que veut dire "Client does not support authentication protocol requested by server..." ?
auteur : Cyberzoide
Client does not support authentication protocol requested by server; consider upgrading MySQL client
Cette erreur apparaît lorsque des clients MySQL d'une version inférieure à 4.1 tentent de se connecter à un serveur MySQL de version supérieure ou égale à 4.1. Typiquement, l'extention MySQL de PHP, utilisée entre autres par phpMyAdmin, ne peut pas se connecter aux serveurs MySQL de version >= 4.1 en raison du changement du cryptage des mots de passe. Pour y remédier, il existe deux solutions :
  • Installer la nouvelle extension cliente MySQLi pour PHP
  • Revenir à l'ancien cryptage dans votre serveur MySQL qui convertira tous les mots de passe via la commande :
UPDATE user SET PASSWORD = OLD_PASSWORD(PASSWORD);

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2003  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com