FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 29 juillet 2013 

 
OuvrirSommaireErreurs - exceptions

Par exemple, vous avez l'erreur typique suivante :

 
Sélectionnez
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 :

 
Sélectionnez
echo "Ma valeur = $myObj->myValue <br>";

ou

 
Sélectionnez
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 :

 
Sélectionnez
echo "Ma valeur : ${myObj->myValue}";

ou

 
Sélectionnez
echo "Ma valeur : ".$myObj->myValue;
Mis à jour le 4 août 2008  par Cyberzoide

PHP dispose pour cela de la directive de configuration display_errors.

Script PHP :
Sélectionnez
<?php
ini_set('display_errors', 0);
Fichier php.ini, httpd.conf ou .htaccess :
Sélectionnez
display_errors = 0;

Dans tous les cas, il faut mettre error_reporting à la valeur E_ALL | E_STRICT

Script PHP :
Sélectionnez
<?php
error_reporting(E_ALL | E_STRICT); // PHP >= 5
Fichier php.ini, httpd.conf ou .htaccess :
Sélectionnez
error_reporting = E_ALL | E_STRICT ;PHP >= 5

Vous pouvez obtenir la liste des constantes disponibles dans PHP sur cette page : Erreurs.

Mis à jour le 4 août 2008  par Jérôme, Guillaume Rossolini

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()

Mis à jour le 4 août 2008  par Forum PHP, Kerod

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

Beaucoup de fonctions retournent FALSE en cas d'échec. Alors vous serez peut-être amené à tester le retour à l'aide d'un if :

 
Sélectionnez
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 :

 
Sélectionnez
$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.

Mis à jour le 4 août 2008  par Gruik

A l'utilisation des fonctions LDAP, PHP renvoie le message :

 
Sélectionnez
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.

Créé le 26 juin 2006  par BiD0uille
 
Sélectionnez
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 :
 
Sélectionnez
UPDATE user SET PASSWORD = OLD_PASSWORD(PASSWORD);
Créé le 26 juin 2006  par Cyberzoide
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Developpez.com Developpez LLC. Tous 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'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.