Newbie - Pb de connecxion distante (en local: OK) [Apache/PHP/MySQL] - PHP - Programmation
Marsh Posté le 21-07-2005 à 22:17:39
Effectivement ça paraît louche. Vous avez testé au même moment ? On sait jamais que t'ais stoppé mysql entre temps.
Marsh Posté le 21-07-2005 à 22:19:36
On a testé 50 fois.
Est ce que quand PHP accède à MySQL, il lui donne par un moyen ou par un autre des infos sur le client, genre le login Windows, oua lors l'IP du client ou autre?
Marsh Posté le 21-07-2005 à 22:40:19
Ny a til pa smoyen pour moi de voir ce qu'il se passe de maniere interne?
Sinon, je démarre mon serveur MySQL n faisant un mysqld --skip-grant-tables, comme ca, je suis sur qu'il n'y a pas de probleme de login (de toute facon, si y avait un pb de login, je n'aurais pas ce message)
Est ce que ca ne pourrait pas etre un pb de port? Genre il utilise un port différent de connection quand l'appel est lancé dun client externe?
Marsh Posté le 21-07-2005 à 22:48:47
A mon avis ton truc bloque les requêtes externes sur le port 3306. T'aurais pas 2K server ?
Marsh Posté le 22-07-2005 à 07:23:55
Alors:
Je suis sous WinXP Pro.
Et j'ai un firewall (routeur Wifi Firewall Netgear)
Ce que je ne comprends pas, c'est que tu me parles de "requetes externes", mais si je ocmprends bien, c'est bien PHP qui lance une requete sous MySQL. Les deux étant installés sur la même machine, pourquoi parler de requête externe?
Marsh Posté le 22-07-2005 à 09:33:31
Je sais pas exactement comment marche MySQL avec PHP, il me semble juste avoir déjà entendu parler d'un problème similaire et c'était une histoire de port 3306 bloqué ou dans le genre.
Sinon t'as essayé avec localhost au lieu de 127.0.0.1 ? Je viens de trouver ça après une petite recherche :
If you are asking, can I setup my test server just like the production server and run the same exact scripts without having to modify the mysql_connection information, the answer is Yes, if the server parameter in your mysql_connect function for your connection is localhost. Whenever you specify "localhost" or "localhost:port" as server, the mysql client library will override this and try to connect to a local socket (named pipe on Windows). If you want to use TCP/IP, use "127.0.0.1" instead of "localhost".
Marsh Posté le 22-07-2005 à 09:36:35
On vient encore de réessayer ce matin.
Et dans mon error.log (serveur Apache), voici ce que j'ai:
Code :
|
Donc, en fait, sur Test2, j'essaie avec 127.0.0.1 et sur Test3, j'essaie avec localhost, mais le résultat est le même.
Sinon, j'ai ouvert mon port 3306 (Port Forwarding), mais rien n'y fait.
Marsh Posté le 22-07-2005 à 09:41:17
Sinon, en testant depuis chez moi, quand je fais un
http://monIP/Tests/Test3SimpleTableWithLayout.php
ou un
http://127.0.0.1/Tests/Test3SimpleTableWithLayout.php
Ca marche pareil, c'est à dire parfaitement.
Marsh Posté le 22-07-2005 à 10:15:25
Je viens d'essayer avec une autre personne se connectant chez moi depuis la Suisse, et ca ne marche toujours pas.
Puis là, je viens d'essayer avec mon 2ème ordi (connecté sur mon routeur en Wifi), en tapant les requetes:
Code : |
et
Code : |
Sachant que 192.168.0.2 est l'IP interne de l'ordi sur lequel se trouve le serveur, et ça marche parfaitement...
Je n'arrive vraiment pas à concevoir pourquoi ca ne marche pas. Car la seule différence entre les différents tests est que les tests effectués avec les ordis de mon réseau marchent bien, alors que ceux effectués depuis l'extérieur ne marchent pas.
Mais la connection PHP-MySQL est interne au serveur non? PHP ne repasse pas par l'ordinateur client pour se connecter à MySQL? Ca ne rimerait à rien??
Marsh Posté le 22-07-2005 à 11:50:08
Bon, en observant le log MySQL, et en demandant à des amis d'essayer, je constate que la même chose est loggée, que ce soit moi ou eux qui tentent de se connecter (mais avec eux, ça ne marche pas)
Voici le log:
Code :
|
Ce script montre donc que la requête MySQL est bel et bien lancée alors que du point de vue client, il apparait qu'il n'y a pas de connection:
Code :
|
Bref, je n'arrive vraiment pas à comprendre...
Marsh Posté le 22-07-2005 à 12:39:44
Bon, finalement, il s'avère que la connexion marche, amsi que l'affichage de la table ne marche pas.
Je trouvais ca bizarre que dans le log MySQL, il montrait la requête...
Donc, a priori, MySQL renvoie les enregistrements à Apache/PHP, mais ceux ci ne sont pas retournés au client, et il y a juste une progress bar hyper lente, sans message d'erreur. (je parle toujours ici des clients distants)
Marsh Posté le 21-07-2005 à 22:01:14
Salut,
J'ai récemment installé sur ma machine le trio Apache (2.0.54)/PHP (4.4.0)/MySQL (5.xx)
A priori, tout marche bien, je me suis fait une petite page PHP, se connectant à ma base MySQL, et elle affiche les données.
Cependant, j'ai voulu faire essayer cette même page à un ami, donc, à partir d'un ordinateur distant. Le début de la page (la partie PHP) s'affiche bien, mais au bout d'un certain timeout, il obtient l'errreur suivante:
A priori, en lancant la page, PHP n'arrive pas à se connecter à la base MySQL.
La chaîne de connection dans ma page PHP est la suivante:
A vrai dire, je ne me suis pas soucié pour le moment des users, etc. Je voulais juste opbtenir quelque chose de simple marchant pour tout le monde.
Je ne comprends pas pourquoi ca ne marcherait pas en utilisant un client distant, sachant que c'est PHP qui se connecte à la base, et non pas le client directement. Il ne devrait donc pas y avoir de différence, et le tout devrait marcher aussi bien de mon propre ordi (donc mon serveur) que d'un ordinateur distant?