[Apache/PHP/MySQL] Newbie - Pb de connecxion distante (en local: OK)

Newbie - Pb de connecxion distante (en local: OK) [Apache/PHP/MySQL] - PHP - Programmation

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:
 

Code :
  1. Warning: mysql_connect(): Can't connect to MySQL server on '127.0.0.1' (10061) in C:\Program Files\Apache Group\Apache2\BWTests\Test2SimpleTable.php on line 8
  2. Could not connect: Can't connect to MySQL server on '127.0.0.1' (10061)


 
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:
 

Code :
  1. $link = mysql_connect('127.0.0.1', '', '') or die('Could not connect: ' . mysql_error());


 
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?

Reply

Marsh Posté le 21-07-2005 à 22:01:14   

Reply

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. :whistle:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

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?

Reply

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?


Message édité par Yoyo@ le 22-07-2005 à 07:36:47
Reply

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 ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

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?

Reply

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".


Message édité par sielfried le 22-07-2005 à 09:33:57

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

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 :
  1. [Fri Jul 22 09:25:29 2005] [error] [client xx.xx.xx.xx] PHP Warning:  mysql_connect(): Can't connect to MySQL server on '127.0.0.1' (10061) in C:\\Program Files\\Apache Group\\Apache2\\BWTests\\Test2SimpleTable.php on line 9
  2. [Fri Jul 22 09:25:41 2005] [error] [client xx.xx.xx.xx] PHP Warning:  mysql_connect(): Can't connect to MySQL server on 'Localhost' (10061) in C:\\Program Files\\Apache Group\\Apache2\\BWTests\\Test3SimpleTableWithLayout.php on line 31


 
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.


Message édité par Yoyo@ le 22-07-2005 à 09:38:16
Reply

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.

Reply

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 :
  1. http://192.168.0.2/Tests/Test2SimpleTable.php


 
et
 

Code :
  1. http://192.168.0.2/Tests/Test3Simp [...] Layout.php


 
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??

Reply

Marsh Posté le 22-07-2005 à 10:15:25   

Reply

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 :
  1. 050722 11:44:00      19 Connect     ODBC@localhost as anonymous on
  2.       19 Init DB     mydb
  3.       19 Query       SELECT * FROM facet LIMIT 100
  4.       19 Quit


 
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 :
  1. Warning: mysql_connect(): Can't connect to MySQL server on '127.0.0.1' (10061) in C:\Program Files\Apache Group\Apache2\BWTests\Test2SimpleTable.php on line 8
  2. Could not connect: Can't connect to MySQL server on '127.0.0.1' (10061)


 
Bref, je n'arrive vraiment pas à comprendre... :(


Message édité par Yoyo@ le 22-07-2005 à 11:50:28
Reply

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)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed