IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Comment afficher les erreurs MySQL en local ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 74
    Points : 59
    Points
    59
    Par défaut Comment afficher les erreurs MySQL en local ?
    Bonjour,

    Sur mon serveur de tests (linux), un fichier test.php génère l'erreur suivante:
    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/test.php on line 29
    Sur mon PC en local (Windows), le même fichier ne génère aucune erreur.

    J'aimerais savoir comment afficher cette erreur (et d'autres éventuellement) sur mon PC en local, pour faire les corrections.

    Je sais que pour ne plus afficher cette erreur, il faut établir la connexion avec MySQL avant d'appeler la fonction mysql-real-escape-string. Mais ce n'est pas cela mon problème. Ce que je veux, c'est de pouvoir avoir les mêmes erreurs sur mon PC en local.

    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'aimerais savoir comment afficher cette erreur
    Est ce que ton problème est que l'erreur ne s'affiche pas ou bien qu'elle ne se produit pas ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    Va dans le fichier PHP.ini et trouve cette ligne:

    display_errors = Off

    Change la pour

    display_errors = On

    Maintenant, les erreurs PHP devraient apparaître quand elles se produisent. N'oublie évidemment pas de redémarrer ton serveur pour qu'il prenne en compte cette nouvelle configuration.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 74
    Points : 59
    Points
    59
    Par défaut
    Merci pour vos réponses.
    Est ce que ton problème est que l'erreur ne s'affiche pas ou bien qu'elle ne se produit pas ?
    Eh bien, Elle ne s'affiche pas, c'est sûr. Mais je ne sais pas si elle se produit. Comment vérifier ?

    Va dans le fichier PHP.ini et trouve cette ligne: display_errors = Off
    Dans le fichier php.ini, display_errors = On.

  5. #5
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    C'est peut-être le error_reporting qui n'a pas la bonne valeur. Dans le PHP.ini, cherche cette ligne et vérifie qu'elle a bien la valeur E_ALL, comme ci-dessous... autrement dit, fait afficher toutes les erreurs. Si ce n'est pas le cas, PHP va skipper certaines erreurs dans son affichage.

    error_reporting = E_ALL

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 74
    Points : 59
    Points
    59
    Par défaut
    J'ai vérifié, le error reporting dans php.ini:
    error_reporting = E_ALL | E_STRICT

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    active le mysql.trace_mode

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 74
    Points : 59
    Points
    59
    Par défaut
    mysql.trace_mode est bien activé dans mon php.ini.

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Tu ne dois pas te référer au bon php.ini, c'est pas possible (il y en a plusieurs).

    Appelle la fonction un phpinfo() dans ton code, et recherche les directives en question (display_errors, error_reporting, mysql.trace_mode), et leur valeur locales.
    Recherche aussi la ligne "Loaded Configuration File", il t'indique le chemin (l'endroit) où ce situe le php.ini auquel le serveur se réfère. C'est celui là qu'il faut modifier (ne pas oublier de redémarrer Apache).


    Ou alors fait des ini_get() pour connaitre les valeurs utilisées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo 'display_errors : '.ini_get('display_errors').'<br />';
    echo 'error_reporting : '.ini_get('error_reporting').'<br />';
    echo 'mysql.trace_mode : '.ini_get('mysql.trace_mode').'<br />';
    Mais encore, en admettant que ça soit le bon php.ini, ces directives y sont à plusieurs, ce sont des commentaires/explications.
    Toutes ces lignes commencent pas des ; (points virgules), qui défini une ligne en commentaire, donc inactive.
    Les directives active sont donc celle dont la ligne n'est pas commentée (pas de ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ;display_errors = On <-- Ligne en commentaire, donc non active
    display_errors = Off <-- Ligne active (pas de ; au début)
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 74
    Points : 59
    Points
    59
    Par défaut
    Ces lignes ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo 'display_errors : '.ini_get('display_errors').'<br />';
    echo 'error_reporting : '.ini_get('error_reporting').'<br />';
    echo 'mysql.trace_mode : '.ini_get('mysql.trace_mode').'<br />';
    donnent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    display_errors : 1
    error_reporting : -1
    mysql.trace_mode : 1

  11. #11
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Plutôt bizarre

    Et si tu change le error_reporting par E_ALL | E_STRICT dans le php.ini (qui correspond à 32767) ?

    Puis provoque une erreur volontairement, genre echo $truc;
    L'erreur de notice disant que $truc n'est pas définie est elle affichée ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    si tu fais pas de connexion il se connecte avec l'utilisateur en cours, donc celui qui lance php, sinon il va chercher le mysql.default_user, il suffis de faire get_current_user() pour savoir l'utilisateur

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 74
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    Le problème est maintenant résolu.

    Pour mieux comprendre, j'ai arrêté le service mysql et là, le message d'erreur est bien apparu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to MySQL server on 'localhost' (10061) in G:\...\test.php on line 56
    Le service relancé, je suis donc allé vérifier les utilisateurs de mysql et surprise: les utilisateurs "N'importe quel" et "pma" n'avaient pas de mot de passe. Je leur ai défini des mots de passe, et l'erreur s'affiche parfaitement.

    Merci à tous de m'avoir aidé à résoudre ce problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 22/04/2011, 21h27
  2. Réponses: 3
    Dernier message: 22/11/2007, 15h35
  3. [DEBUTANT] Comment afficher les erreurs ?
    Par ionix dans le forum Langage
    Réponses: 2
    Dernier message: 20/10/2006, 16h13
  4. [web] comment afficher les erreur d'un cgi
    Par chtiboss dans le forum Web
    Réponses: 6
    Dernier message: 24/12/2003, 11h22
  5. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo