[RESOLU] Problème introuvable

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Problème introuvable

Re: [RESOLU] Problème introuvable

par moogli » 29 août 2012, 20:12

si juste moins automatique :)

Re: Problème introuvable

par schim59 » 29 août 2012, 19:57



:mrgreen: :mrgreen: :mrgreen:

le fait d'avoir des variables permet, par exemple d'avoir un fichier de conf avec des sections local, prod etc qui te permet de ne pas modifier ton code :)

@+
En fait j'ai plusieurs fichiers et je modifie l'include(), c'est pas conseillé ?

Re: Problème introuvable

par Fre3z69 » 29 août 2012, 19:41

En local cela fonctionne, donc problème résolut

Merci pour tout

Cordialement

Re: Problème introuvable

par moogli » 29 août 2012, 19:38

oui je me connecte à la base de donnée de mon site (donc distant) afin d'avoir les même infos que sur le site.

Sinon je récupère le sql de mes tables et je l'importe, dans le pire des cas.

Merci

Cordialement
y a des chances que ton hébergeur ne permettent pas ce type de comportement.

donc test en local effectivement


@+
parce que PDO à besoin de ces info pour ce connecter, c'est pas de la cartomancie ;)
Je mets les logs en clair c'est pour ça que je comprenais pas ^^
:mrgreen: :mrgreen: :mrgreen:

le fait d'avoir des variables permet, par exemple d'avoir un fichier de conf avec des sections local, prod etc qui te permet de ne pas modifier ton code :)

@+

Re: Problème introuvable

par Fre3z69 » 29 août 2012, 19:21

oui je me connecte à la base de donnée de mon site (donc distant) afin d'avoir les même infos que sur le site.

Sinon je récupère le sql de mes tables et je l'importe, dans le pire des cas.

Merci

Cordialement

Re: Problème introuvable

par schim59 » 29 août 2012, 19:06

parce que PDO à besoin de ces info pour ce connecter, c'est pas de la cartomancie ;)
Je mets les logs en clair c'est pour ça que je comprenais pas ^^

Re: Problème introuvable

par moogli » 29 août 2012, 19:02

Bonjour,
Pourquoi mettre des variables dans le new PDO ?
parce que PDO à besoin de ces info pour ce connecter, c'est pas de la cartomancie ;)
J'ai maintenant ceci comme erreur:
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\fantasycompany\conf\conf.php on line 9
script trop long, surement le même problème qu'en dessous on ne peu pas faire grand chose avec juste ça :)
Erreur : SQLSTATE[HY000] [2002] Une tentative de connexion a échoué car le parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion n’a pas répondu.
La c'est déjà plus clair, bien que peu courant.
Donc php se connecte à quelque chose à l'adresse et au port indiqué mais rien ne répond ou pas comme il faut.

- vérifie url et port du serveur mysql
- au pire met le "dsn" dans une variable et affiche la pour voir ce que ça donne, si c'est bien conforme a ce que tu attend.
- tu te connect en local ?
- sur un serveur distant ? (par défaut les serveurs MySQL n'accepte pas de connexion distante)

est ce que tu a ce même problème avec un client mysql (heidi SQL, le client en console etc etc)

@+

Re: Problème introuvable

par schim59 » 29 août 2012, 18:50

Bonjour,
Pourquoi mettre des variables dans le new PDO ?

Re: Problème introuvable

par Fre3z69 » 29 août 2012, 17:58

Ok j'ai donc comme dit plus haut mit :

Sur le site de production
echo 'Ce service est momentanément indisponible. Veuillez nous excuser pour la gêne occasionnée.';
sur le site local
echo 'Erreur : '.$erreur->getMessage();
Ce qui me permet d'afficher directement une erreur si elle ce produit.

J'ai maintenant ceci comme erreur:
Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\fantasycompany\conf\conf.php on line 9
ou
Erreur : SQLSTATE[HY000] [2002] Une tentative de connexion a échoué car le parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion n’a pas répondu. 
qui correspond à ceci
$cnx = new PDO('mysql:host='.$host.';port='.$port.';dbname='.$database, $user, $pass);
Merci de cotre aide

Cordialement

ps: Pour la gestion d'erreur je ne serais pas contre plus d'infos si possible

Re: Problème introuvable

par moogli » 29 août 2012, 17:41

on va faire simple : le premier message en premier, l'index on verra après (mais je pense que c'est le même problème).

Le code que tu nous indique pour conf.php ne correspond pas au message d'erreur vu que la ligne 13 est echo 'Erreur : '.$erreur->getMessage();

par contre le catch complet commence ligne 11, la 1ère ligne exécutée dans ce catch contient un appel à la variable $cnx qui est créer dans le try
} catch (PDOException $erreur) {
    if (!$cnx && RANK_ID>5) {
        echo 'Erreur : '.$erreur->getMessage();
    } if (!$cnx && RANK_ID<5) {
        echo 'Ce service est momentanément indisponible. Veuillez nous excuser pour la gêne occasionnée.';
    }
}
hors si l'exception est levée par le new PDO cette variable n'est jamais déclarée !!!!!!! d'ou l'erreur !

résultat :
- ta connexion PDO est foireuse (tu n'a pas modifier correctement les infos
- vire cette référence à $cnx de ton code qui de toute façon n'est pas un booléen mais doit être une ressource !
- Affiche un message d'erreur cohérent pour voir le problème.

comme déjà indiqué un catch n'est la pour ce type de traitement il ne sert qu'a récupérer et traiter l'erreur. je veux bien comprendre le coup de la constante, même si cela ne devrait pas être fait ici (plutot dans un gestionnaire d'erreur) mais en aucun cas l'utilisation de $cnx.


@+

Re: Problème introuvable

par Fre3z69 » 29 août 2012, 17:19

Oui d'accord, mais en même temps, même l'index ne reconnais pas la variable $cnx, donc ça ne viens pas de cela.

Au pire je met que la ligne correspondant au niveau du site, soit la création soit production, comme ça plus de !cnx ^^

ps:
sur le site en ligne : display_errors Off Off
sur le site local : display_errors On On

Re: Problème introuvable

par moogli » 29 août 2012, 11:44

j'ajouterais que
 if (!$cnx && RANK_ID>5) {
        echo 'Erreur : '.$erreur->getMessage();
    } if (!$cnx && RANK_ID<5) {
        echo 'Ce service est momentanément indisponible. Veuillez nous excuser pour la gêne occasionnée.';
    }
dans le catch se base sur une variable créer dans le try, c'est moyen :)


pour info si ces message n’apparaissent pas sur ton site en ligne c'est que le niveau de rapport d'erreur est configuré en conséquence. regarde la différence dans un phpinfo().



@+

Re: Problème introuvable

par Mazarini » 29 août 2012, 11:34

Il faudrait traiter aussi les autres exceptions en ajoutant un catch générique.
En plus, il faudrait affiché des info sur l'erreur pour mieux comprendre genre "var_dump($erreur);".

Il y a une erreur dans le try {...), donc pas de message : il se trouve dans $erreur uniquement.
Au hasard :
- pas de mysql lancé
- pas de base créer
- mauvais utilisateur/mot de passe
- pdo pas installé (j'y crois pas à cause de l'exception pdo)

Re: Problème introuvable

par Fre3z69 » 29 août 2012, 10:49

Bin en fait c'est toujours pareil, il me dit pas connaitre $cnx ce qui est bizarre vu qu'en prod ça fonctionne et que c'est le même code.

Re: Problème introuvable

par xTG » 29 août 2012, 09:02

Remplaces !$cnx par isSet($cnx).
De plus tu peux sortir l'instanciation de PDO du try..catch car elle n'est pas sujette aux exceptions.
Et ainsi on se pose pas la question des portées de variable. (bien que je raconte peut être n'importe quoi là, un long moment que j'ai pas fait de PHP et j'ai jonglé avec pas mal d'autres langages ces derniers temps...)