*Einige* PHP-Module können nicht geladen werden
David
- webserver
Hi Forum,
seit einiger Zeit (ich weiß nicht mehr was ich zu dem Zeitpunkt (de)installiert habe) lädt mein PHP 5.1.5 unter Windows XP Professional mit Apache 2.0.59 einfach das mysql-, das mysqli- und das curl-Modul nicht mehr, möglicherweise auch andere die ich noch nicht überprüft habe. Das Witzige: Die anderen Module können in der php.ini problemlos hinzugefügt und entfernt werden, z.B. tidy oder xslt, an einer falschen Pfadeinstellung kann es also kaum liegen. Die nötigen dll-Erweiterungen liegen auch im entsprechenden Verzeichnis (C:\Programme\PHP\ext), da habe ich mich mehrmals vergewissert.
Nun habe ich PHP und sogar Apache und MySQL mehrmals deinstalliert, sämtliche Konfigurationsdateien explizit gelöscht (httpd.conf, php.ini, my.ini), den Rechner sicherheitshalber neugestartet und wieder die Software reinstalliert, aber das Problem bleibt exakt dasselbe.
Ich habe mal einen Blick in Apaches error.log geworfen, dort findet sich die folgende Zeile - exemplarisch für das mysql-Modul:
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Programme\PHP\ext\php_mysql.dll' - Das angegebene Modul wurde nicht gefunden.\r\n in Unknown on line 0
Die Datei existiert aber, da bin ich mir absolut sicher (die doppelten Backslashes kommen nur von der Maskierung).
Sicher könnt ihr mir jetzt nicht eine Schritt-für-Schritt-Anleitung zum Reparieren geben, das ist mir klar ;-) Aber vielleicht habt ihr ja schonmal von vergleichbaren Problemen gehört.
Da ich auf MySQL dringend angewiesen bin, wäre ich euch echt super dankbar, wenn ihr mir einen kleinen Lösungsansatz nennen könntet :-)
echo $begrüßung;
seit einiger Zeit [...] lädt mein PHP 5.1.5 unter Windows XP Professional mit Apache 2.0.59 einfach das mysql-, das mysqli- und das curl-Modul nicht mehr, möglicherweise auch andere die ich noch nicht überprüft habe. Das Witzige: Die anderen Module können in der php.ini problemlos hinzugefügt und entfernt werden, z.B. tidy oder xslt, an einer falschen Pfadeinstellung kann es also kaum liegen. Die nötigen dll-Erweiterungen liegen auch im entsprechenden Verzeichnis (C:\Programme\PHP\ext), da habe ich mich mehrmals vergewissert.
Es sind nicht nur die php_irgendwas.dll-Dateien aus dem ext-Verzeichnis erforderlich. Einige dieser Erweiterungen laden weitere DLL-Dateien nach. Wenn diese nicht gefunden werden kommt es ebenfalls zu dieser Fehlermeldung:
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Programme\PHP\ext\php_mysql.dll' - Das angegebene Modul wurde nicht gefunden.\r\n in Unknown on line 0
Im PHP-Hauptverzeichnis gibt es einige DLL-Dateien mit php am Anfang. Die sind es nicht, können aber auch wie die anderen behandelt werden. Die anderen werden gefunden, wenn sie im Verzeichnis der apache.exe oder im windows/system32-Verzeichnis liegen oder der PATH auf ihr Verzeichnis zeigt.
echo "$verabschiedung $name";
hallo dedlfix,
Im PHP-Hauptverzeichnis gibt es einige DLL-Dateien mit php am Anfang. Die sind es nicht, können aber auch wie die anderen behandelt werden. Die anderen werden gefunden, wenn sie im Verzeichnis der apache.exe oder im windows/system32-Verzeichnis liegen oder der PATH auf ihr Verzeichnis zeigt.
Jaein. Zunächst einmal beginnen die Namen mit "lib...", also beispielsweise "libmysql.dll". Es gibt in der kleinen "install.txt" einen Hinweis: "php_mysql.dll MySQL functions PHP >= 5.0.0, requires libmysql.dll (bundled)". Aufgrund dieses Hinweises hatte ich diese libmysql.dll bisher immer im Apache-bin-Verzeichnis liegen. Um die Frage des OP beantworten zu können, habe ich sie mal rausgeworfen, also gelöscht. Serverneustart versteht sich von selbst. Mein Apache enthält laut phpinfo immer noch dieselbe MySQL-Unterstützung wie zuvor. Ich bin gerade noch am Herumprobieren.
Grüße aus Berlin
Christoph S.
Hey,
Es sind nicht nur die php_irgendwas.dll-Dateien aus dem ext-Verzeichnis erforderlich. Einige dieser Erweiterungen laden weitere DLL-Dateien nach. Wenn diese nicht gefunden werden
um das genau zu wissen, empfehle ich den Einsatz von depends. http://www.dependencywalker.com/
echo $begrüßung;
Es sind nicht nur die php_irgendwas.dll-Dateien aus dem ext-Verzeichnis erforderlich. Einige dieser Erweiterungen laden weitere DLL-Dateien nach. Wenn diese nicht gefunden werden
um das genau zu wissen, empfehle ich den Einsatz von depends. http://www.dependencywalker.com/
Eine einfache Methode ist auch, die DLL-Datei in einem Hex-Editor (beispielsweise Ultraedit) zu öffnen und nach der Zeichenfolge .dll zu suchen. So kommt man auch an die Namen der verwendeten DLLs.
echo "$verabschiedung $name";
P.S. Leider hilft mir dehanci nicht so richtig beim Verständnis der von dir verwendeten Zeichenzusammenstellung 迪拉斯 (dí lā sī). Möchtest du sie mir erklären? :-)
echo $begrüßung;
Es sind nicht nur die php_irgendwas.dll-Dateien aus dem ext-Verzeichnis erforderlich. Einige dieser Erweiterungen laden weitere DLL-Dateien nach. Wenn diese nicht gefunden werden
um das genau zu wissen, empfehle ich den Einsatz von depends. http://www.dependencywalker.com/
Weil es mir gerade über den Weg gelaufen ist: In der Datei snapshot.txt im PHP-Verzeichnis sind ebenfalls die Abhängigkeiten der einzelnen Module aufgeführt.
echo "$verabschiedung $name";
Ganz lieben Dank für eure Antworten! :-)
Tatsächlich meldet dieser Dependency Walker fehlende DLLs, ich werd mir die Sache mal genauer anschauen!