Mailinglisten-Archive |
Hallo, gelegentlich blitzen MySQL Fehlermeldugen unter Windowssystemen auf den verschiedenen PHP Listen auf, die oft nur mit einem unvollständigen WinSocket Hinweis pariert werden. Da ich selbst Opfer einer dieser Meldungen bin - diesmal unter NT - habe ich mich auf die Suche begeben. Verschiedene MySQL/PHP Kombinationen liefern unter Windows (NT, 95, 98) eine der folgenden Fehlermeldungen: mysql_connect() -> MySQL Connection Failed: Can't create IP socket (10106) mysql_pconnect() -> Can't create IP socket (10106) Diese Texte entstammen direkt der MySQL API, wie man an einem Code Snippet aus dem PHP Source (functions/mysql.c - hier Version 3.0.14) sehen kann: if MYSQL_VERSION_ID > 32199 /* this lets us set the port number */ mysql_init(mysql); if (mysql_real_connect(mysql,host,user,passwd,NULL,port,socket,0)==NULL) { #else if (mysql_connect(mysql,host,user,passwd)==NULL) { #endif php3_error(E_WARNING,"MySQL Connection Failed: %s\n",mysql_error(mysql)); efree(hashed_details); efree(mysql); RETURN_FALSE; } MySQL stolpert an dieser Stelle über WinSocket Probleme. Diese haben mit hoher Wahrscheinlichkeit eine der folgenden Ursachen: - Versionskonflikte - Unzureichende Benutzerrechte (- fehlerhafte oder fehlende TCP/IP Dienste) +++ bekannte Versionskonflikte MySQL benötigt eine aktuelle WinSocket Variante. Win95 und NT kennen von Haus aus nur ältere Versionen (V1.1). Win95 benötigt deshalb ein Update (aktuell ist V2.2), NT zumindest Service Pack 3. Im Archiv der englischen Liste hat Werner Stuerenburg hilfreiche Links verwewigt: http://marc.theaimsgroup.com/?l=php3-general&m=93453273914198&w=2 +++ Ergänzung Mein NT war etwas hartnäckiger. Trotz SP6a und WinSocket 2.0 streikte es. Eine Rückfrage bei den MySQL Developern ergab, daß fehlende Benutzerrechte ebenfalls die Meldung verursachen können. Die Theorie wird gestützt durch die Beobachtung, daß PHP keine Probleme hat sich an MySQL zu connecten, wenn es auf der Kommandozeile aufgerufen wird, jedoch als CGI scheitert. c:\php3.0.15> php -q test.php3 mit test.php3: <?php echo mysql_connect("localhost:3306", "test", ""); ?> ---> 1 Im Browser http://localhost/test.php3 als CGI: ---> Can't create IP socket (irgendeine Nummer) Bei mir streikt der Roxen, während der Apache problemlos seinen Dienst verrichtet. +++ Fragen Weiß jemand ob man den Roxen unter NT überreden kann im CGI Modul unter NT die Option "Run script as..." freizugeben. Hierzu müßte man etwas equivalentes zu "start as root" machen, also den Roxen mit Administrator Rechten starten. Wie wird dies gemacht? Danke! Ulf
php::bar PHP Wiki - Listenarchive