8
votes

Les problèmes de PHP sur les fenêtres

Je le code suivant

ERROR 2004 (HY000): Can't create TCP/IP socket (10106)


4 commentaires

fonctionne-t-il de la ligne de commande? Il pourrait un problème d'autorisation. (Cela étant dit, pourquoi ne pas utiliser l'extension MySQL? :)


Hmmm ... une bibliothèque de connexion MySQL en PHP? Intéressant...


Avez-vous essayé d'inclure le dossier Windows dans un chemin env VaR?


MySQL est déclenché, il suffit de blesser dans le serveur un fichier de SQL.


3 Réponses :


0
votes

Essayez d'éteindre votre pare-feu ou d'activer le port


2 commentaires

Si vous Telnet, ce port, quel contenu il est sur? Ou, vous ne pouvez pas atteindre le port?


Cela signifie que vous n'ouvrirez jamais ce port. Vérifiez votre code et votre manuel, encore une fois.



3
votes

L'erreur vue xxx

est soulevée par MySQL, le processus MySQL a donc commencé.

Cette erreur correspond à cr_ipsock_error , et Il imprime la cause première sous-jacente du problème: 10106 .

Une recherche rapide donne:

http://msdn.microsoft.com/en-us/library/windows/desktop /ms740668%28v=vs.85%29.aspx

et en particulier: xxx p> Je ne pense pas que cela a quelque chose faire avec le numéro de port étant "ignoré", et encore moins de problèmes de pare-feu.

Il apparaît comme si l'environnement créé par proc_open est assez bon pour démarrer le processus MySQL, mais Pourtant, pas assez complet de sorte que cela appelle à loadlibrary de ce processus, pour charger le code de réseau, notamment, échouez.

La même commande fonctionne de la ligne de commande, probablement parce que L'environnement de la ligne de commande contient beaucoup plus.


0 commentaires

1
votes

L'argument $ env à l'proc_open remplace l'environnement actuel, mais si elle est NULL, l'environnement du processus en cours est utilisé.

Une solution possible serait d'utiliser putenv () pour changer l'environnement actuel au lieu de spécifier un nouveau tableau pour $ env. Laissez le travail de l'héritage de l'environnement.

Je rencontré ce problème en utilisant spécifiquement la composante symphonie / processus pour lancer un processus de PHP. Tout fonctionnait bien dans linux, mais le processus a échoué dans les serveurs Windows sans accès au réseau. En utilisant putenv () et NULL pour $ env a bien fonctionné dans les deux cas, OS et résolu le problème. L'effet de la putenv () ne dure que pendant toute la durée de la demande que les questions, donc il doit être sûr à moins que vos modifications entraînent des problèmes avec le reste de votre script, ou il y a des choses dans votre environnement actuel qui ne devrait pas être vu dans le processus ouvert.

Je googlé mon chemin ici chercher des réponses, et l'information m'a aidé certainement à une solution. Il a sans doute été trop longtemps pour aider à l'affiche originale, mais peut-être il peut aider la personne suivante.


0 commentaires