hawkmaster: Module können nicht geladen werden?

Hallo zusammen,
da ich trotz stundenlangen googlen nicht weiterkomme, ein Hilferuf hier im Forum:
Ich versuche gerade den Apache und PHP manuell zu installieren.
Der Apache 2.2.17 wurde mit dem MSI Paket installiert und läuft.
Dann habe ich mir PHP 3.3 heruntergeladen und versucht als Modul einzubinden.
Hier fehlen mir aber die Extensions "php_ldap.dll", "php_snmp.dll", "php_mcrypt.dll" und "php_zip.dll". In alten PHP Versionen waren diese enthalten.
Also versuchte ich es mit einer PHP 3.1 Version die ich vom Xampp noch habe wo diese Extensions drin sind.

Wenn ich nun den Apache Dienst starten möchte, gibt es folgende Fehler:

PHP Startup: Unable to load dynamic library 'c:\php\ext\php_ldap.dll' - Das Betriebssystem kann %1 nicht ausführen.
PHP Startup: Unable to load dynamic library 'c:\php\ext\php_pdo_mysql_libmysql.dll' - Das angegebene Modul wurde nicht gefunden.

Beide Dlls sind aber tatsächlich im "ext" Ordner enthalten. Auch die anderen Module werden problemlos geladen.
Was mich ein wenig wundert ist: Im php_error.log kommt die Fehlermeldung zweimal vor. Einmal sind die Pfade mit \ und einmal mit \ Also;
PHP Warning:  PHP Startup: Unable to load dynamic library 'c:\php\ext\php_ldap.dll' - Das Betriebssystem kann %1 nicht ausf\xfchren.\r\n in Unknown on line 0
<br />
<b>Warning</b>:  PHP Startup: Unable to load dynamic library 'c:\php\ext\php_ldap.dll' - Das Betriebssystem kann %1 nicht ausführen.
 in <b>Unknown</b> on line <b>0</b><br />
PHP Warning:  PHP Startup: Unable to load dynamic library 'c:\php\ext\php_pdo_mysql_libmysql.dll' - Das angegebene Modul wurde nicht gefunden.\r\n in Unknown on line 0
<br />
<b>Warning</b>:  PHP Startup: Unable to load dynamic library 'c:\php\ext\php_pdo_mysql_libmysql.dll' - Das angegebene Modul wurde nicht gefunden.
 in <b>Unknown</b> on line <b>0</b><br />

Hat jemand eine Idee was das sein kann?

vielen Dank und viele Grüße
hawk

  1. Hi!

    Dann habe ich mir PHP 3.3 heruntergeladen und versucht als Modul einzubinden.

    Bist du sicher, dass du PHP 3.3 meinst? Nicht etwa 5.3(.3)?

    Hier fehlen mir aber die Extensions "php_ldap.dll", "php_snmp.dll", "php_mcrypt.dll" und "php_zip.dll". In alten PHP Versionen waren diese enthalten.

    mcrypt und zip brauchen keine Extension, beides gehört mittlerweile zum Lieferumfang. Wenn du da noch extension=...-Zeilen in der php.ini stehen hast, lösch sie raus.

    Einige Extensions benötigen weitere DLLs. Sie sagen nur nicht, welche das sind. Die php_xxx.dll kann einfach nur nicht geladen werden, lauter die Fehlermeldung. Wenn das PHP-Handbuch keine Auskunft gegen kann, hilft, die php_xxx.dll in einem Hexeditor zu öffnen und nach .dll zu suchen. Das was du dabei findest, gehört entweder zu Windows oder ist im PHP-Verzeichnis zu finden (libeay32.dll beispielsweise). Diese müssen von PHP gefunden werden können. Im system32-Verzeichnis der Windows-Installation werden sie das problemlos. Ansonsten überall im PATH oder im Verzeichnis der gestarteten Exe - müsste bei der Modul-Version vom Apachen der Apache selbst sein.

    PHP Startup: Unable to load dynamic library 'c:\php\ext\php_pdo_mysql_libmysql.dll' - Das angegebene Modul wurde nicht gefunden.

    Das Modul gibt es nicht. php_pdo_mysql.dll gibt es aber.

    Beide Dlls sind aber tatsächlich im "ext" Ordner enthalten. Auch die anderen Module werden problemlos geladen.

    Würde mich wundern. Wenn du allerdings versuchst, eine ...mysql.dll von < 5.3 in 5.3 zum Laufen zu bringen versuchst, wunderte es mich nicht, wenn das scheitert, denn da gab es eine mit mysqlnd größere Änderung.

    Was mich ein wenig wundert ist: Im php_error.log kommt die Fehlermeldung zweimal vor.

    Ignorier die doppelte Meldung.

    Lo!

    1. Hi dedlfix,

      vielen Dank für deine Hilfe. Kann ich heute gebrauchen, Ich drehe mich im Kreis und komme mir vor also ob ich zum ersten mal Apache mit Php installiere.
      Ich meinte natürlich Php 5.3.3

      mcrypt und zip brauchen keine Extension, beides gehört mittlerweile zum Lieferumfang. Wenn du da noch extension=...-Zeilen in der php.ini stehen hast, lösch sie raus.

      Ok, das ist schon mal gut. Das wusste ich nicht. Würde mir noch LDAP.dll und snmp.dll fehlen.

      Ich habe aber glaube ich noch ein ganz anderes Problem.
      Wenn ich nun die PHP 5.3.1 Version nehme und in der httpd.conf versuche einzubinden:
      LoadModule php5_module "C:/WebSrv/php/php5apache2_2.dll"
      AddHandler application/x-httpd-php .php

      configure the path to php.ini

      PHPIniDir "C:/WebSrv/php"

      Dann stürzt mir der Apache Dienst sofort ab beim starten.
      Lasse ich PHPIniDir weg, dann läuft er und ich kann auch phpinfo() aufrufen. Es scheint aber als ob die php.ini in C:/WebSrv/php nicht gefunden denn die Extensions werden auch nicht geladen und es wir was mit
      c:\windows angezeigt.

      Hmm, also ich bin gerade total verwirrt.
      Hast du noch eine Idee?

      Gruss und danke
      hawk

      vielen Dank und viele Grüße
      hawk

      1. Hi!

        Ich habe aber glaube ich noch ein ganz anderes Problem.
        Wenn ich nun die PHP 5.3.1 Version nehme und in der httpd.conf versuche einzubinden:

        PHP-Modul im APachen unter Windows hab ich noch nicht aufzusetzen versucht, also schau ich mal bei denen, die das schon sehr oft gemacht haben: XAMPP. Die gezipte Lite-Version als ergibt eine lauffähige Version ohne zu installieren in einem Verzeichnis. Nach Abschluss der Untersuchung kann man das löschen und alles ist wie vorher.

        LoadModule php5_module "C:/WebSrv/php/php5apache2_2.dll"

        In apache/conf/extra/ liegt eine httpd-xampp.conf. Die bindet PHP nicht nur mit LoadModule ein. Probier das mal so, wie die das dort machen.

        AddHandler application/x-httpd-php .php

        Gleich nach dem LoadFile und LoadModule kommt ein bedingter Abschnitt, der die Dateiendungen auf eine etwas andere aber gleichwertige Weise einbinden. Interessant daran ist, dass dieser Abschnitt nur dann ausgeführt wird, wenn das Modul geladen werden konnte. Auch das PHPINIDir steht darin, kann also den Apachen nicht ärgern, wenn das Modul abwesend ist.

        Dann stürzt mir der Apache Dienst sofort ab beim starten.

        Er hinterlässt auch keinen Eintrag im Error-Log?

        Lasse ich PHPIniDir weg, dann läuft er und ich kann auch phpinfo() aufrufen. Es scheint aber als ob die php.ini in C:/WebSrv/php nicht gefunden denn die Extensions werden auch nicht geladen und es wir was mit

        Naja, PHP kann ja schlecht raten, dass es eine php.ini von einem von dir festgelegten Ort nehmen soll. Also klappert es ein paar vordefinierte Orte ab.

        Lo!

        1. Hallo

          Er hinterlässt auch keinen Eintrag im Error-Log?

          nein bzw.
          Thu Oct 21 18:11:11 2010] [warn] pid file C:/WebSrv/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?

          im System Event steht

          Der Dienst "Apache2.2" wurde mit folgendem dienstspezifischem Fehler beendet: 1 (0x1).
          mit Event 7024

          ich habe es schon so versucht wie es die bei xampp gemacht haben.
          Jetzt habe ich sogar den Apache 2.2.16 mit dem MSI Paket neu installiert. Dann habe ich PHP 5.3.3 auch mit dem MSI Paket installiert.
          Der PHP Installer trägt dann in die httpd.conf folgendes ein:

          #BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
          PHPIniDir "C:/WebSrv/php/"
          LoadModule php5_module "C:/WebSrv/php/php5apache2_2.dll"
          #END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

          Sobald ich dann den Apache Dienst anhalte und wieder neu starte, schmiert mir der wieder ab!
          Zum Haare raufen!
          Ich habe Windows XP mit SP3. Das witzige daran ist:
          Wenn ich das ganze Paket vom XAMPP installiere, dann funktioniert alles einwandfrei.

          vielen Dank und viele Grüße
          hawk

          1. Hi!

            Sobald ich dann den Apache Dienst anhalte und wieder neu starte, schmiert mir der wieder ab!

            Du hast auch den Hinweis an der Seite der Download-Seite beachtet und die passende PHP-Version genommen?

            Wenn ja, hat die LoadFile-Direktive etwas gebracht?

            Lo!

            1. Hi,

              Du hast auch den Hinweis an der Seite der Download-Seite beachtet und die passende PHP-Version genommen?

              Du meinst wegen VC6 und VC9 version bzw. das die VC9 für den IIS ist? ja das habe ich. Ich habe die VC6 x86 Thread Safe genommen.

              Wenn ja, hat die LoadFile-Direktive etwas gebracht?

              ich habe es genauso gemacht wie im Xampp aber leider mit gleichem Ergebnis.
              ALso ich glaub ich gebe es auf mit der "Hand" Insta. Oder ich versuche es mal in einer anderen "nackten" XP Umgebung.

              vielen Dank und viele Grüße
              hawk

              1. Kleiner Nachtrag

                es liegt definitiv an dem Eintrag:

                PHPIniDir "C:/WebSrv/php/"

                sobald ich das auskommentiere dann läuft der Apache. Allerdings findet er dann die php.ini nicht und es fehlen mir dann die Extensions.

                vielen Dank und viele Grüße
                hawk

                1. Hallo zusammen

                  So nach ewigen googeln und Suchen und debuggen habe ich das Problem gefunden.
                  Für die Nachwelt oder für diejenigen die auch dieses Problem mal haben.
                  Ich dachte zuerst der Apache stürzt ab, wegen PHPIniDir.

                  PHPIniDir "C:/WebSrv/php/"

                  Das war aber nicht der eigentliche Grund. Vielmehr wurde nun die richige php.ini gefunden und die ganzen Extensions geladen. Und hier war das Problem mit Postgre Extension

                  [PHP_PDO_PGSQL]
                  extension=php_pdo_pgsql.dll
                  [PHP_PGSQL]
                  extension=php_pgsql.dll

                  Ich brauchte das zwar nicht, aber es war aktiviert. Damit diese DLLs richtig geladen werden, MUSS unbedingt zusätzlich die Datei "libpq.dll"
                  in Apache/bin Verzeichnis kopiert werden. Standardmäßig liefert PHP diese zwar aus, aber diese liegt im PHP Verzeichnis wo sie nicht gefunden wird.

                  vielen Dank und viele Grüße
                  hawk

                  1. Hi!

                    [PHP_PDO_PGSQL]
                    extension=php_pdo_pgsql.dll
                    [PHP_PGSQL]
                    extension=php_pgsql.dll

                    Ich brauchte das zwar nicht, aber es war aktiviert. Damit diese DLLs richtig geladen werden, MUSS unbedingt zusätzlich die Datei "libpq.dll"
                    in Apache/bin Verzeichnis kopiert werden. Standardmäßig liefert PHP diese zwar aus, aber diese liegt im PHP Verzeichnis wo sie nicht gefunden wird.

                    Das ist eine von den von mir erwähnten, so wie libeay32.dll. Die müssen verfügbar sein, was sie eben nicht sind, wenn sie nur im PHP-Verzeichnis liegen, denn da sucht das Betriebssystem nicht nach ihnen, sondern nur im Starverzeichnis der Exe und im Path.

                    Dass ein Nichtfinden zum Absturz führt ist seltsam. Die CGI-Variante im IIS eingebunden ergibt nur eine Meldung auf der Konsole und fährt dann ohne die Extension fort, wenn man die Meldung bestätigt.

                    Lo!

                    1. Hallo dedlfix,

                      hat zwar nichts mit meinem alten Problem zu tun aber mit dem Apache.

                      Wenn ich z.b. in der httpd.conf dieses eingebe

                      <LocationMatch "^/(?i:(?:phpmyadmin|server-status|server-info))">
                          Order deny,allow
                          Deny from all

                      Allow from ::1 127.0.0.0/8 \                fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \                fe80::/10 169.254.0.0/16

                      ErrorDocument 403 /error/HTTP_XAMPP_FORBIDDEN.html.var
                      </LocationMatch>

                      startet mein eigener Apache nicht mehr. Es liegt irgendwie an der Syntax bei "Allow from" Ich habe auch nichts gefunden was diese Zahlen vor der IP Adresse bedeutet.
                      Schreibe ich nur;
                      Allow from 127.0.0.1
                      dann startet der Apache.

                      Kennst du diese Bedeutung?

                      vielen Dank und viele Grüße
                      hawk

                      1. Hi!

                        Wenn ich z.b. in der httpd.conf dieses eingebe

                        <LocationMatch "^/(?i:(?:phpmyadmin|server-status|server-info))">
                            Order deny,allow
                            Deny from all

                        Allow from ::1 127.0.0.0/8 \                fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \                fe80::/10 169.254.0.0/16

                        ErrorDocument 403 /error/HTTP_XAMPP_FORBIDDEN.html.var
                        </LocationMatch>

                        startet mein eigener Apache nicht mehr.

                        Was sagt das Error-Log? Das sollte immer der erste Blick bei einem Problem sein.

                        Es liegt irgendwie an der Syntax bei "Allow from" Ich habe auch nichts gefunden was diese Zahlen vor der IP Adresse bedeutet.

                        Das sind IPv6-Adressen. Die stehen nicht davor, sondern gleichberechtigt, durch Whitespace getrennt in der Liste der erlaubten IP-Adressen(-Bereiche).

                        Schreibe ich nur;
                        Allow from 127.0.0.1
                        dann startet der Apache.

                        Es könnte daran liegen, dass du kein IPv6 auf der Maschine konfiguriert hast, und damit die Adressen nicht verfügbar sind.

                        Lo!

                        1. Hallo

                          Was sagt das Error-Log? Das sollte immer der erste Blick bei einem Problem sein.

                          Ja da schaue ich auch immer zuerst. Nur war das leer weil der Apache garnicht startete. Aber im Event Log war der nichtssagende 7024 error.
                          Ist aber momentan nicht so wichtig. Ich lasse es mal bei;
                          Allow from 127.0.0.1

                          Aber was anderes:
                          Hast du je schon mal nachträglich Extensions für PHP in Windows kompiliert.
                          Wenn ich nun z.b. für PHP 5.3.3 die extension php_ldal.dll und php_snmp.dll brauche.

                          Habe keine Info dazu gefunden

                          vielen Dank und viele Grüße
                          hawk

                          1. Hi!

                            Hast du je schon mal nachträglich Extensions für PHP in Windows kompiliert.

                            Nein.

                            Wenn ich nun z.b. für PHP 5.3.3 die extension php_ldal.dll und php_snmp.dll brauche.

                            php_ldap.dll und php_snmp.dll befinden sich beide im Verzeichnis ext der Download-Pakete.

                            Lo!

                            1. Hallo

                              php_ldap.dll und php_snmp.dll befinden sich beide im Verzeichnis ext der Download-Pakete.

                              Nein, also entweder habe ich Tomaten auf den Augen oder wir reden von unterschiedlichen Paketen.
                              Also im http://windows.php.net/download/ und hier das Paket
                              VC6 x86 Thread Safe (2010-Jul-21 20:06:17)

                              hat bei keine dieser Extensions
                              Nur das VC9 und das soll mal laut php.net nicht für den APache nehmen

                              vielen Dank und viele Grüße
                              hawk

                              1. Hi!

                                php_ldap.dll und php_snmp.dll befinden sich beide im Verzeichnis ext der Download-Pakete.
                                Nein, also entweder habe ich Tomaten auf den Augen oder wir reden von unterschiedlichen Paketen.
                                Also im http://windows.php.net/download/ und hier das Paket
                                VC6 x86 Thread Safe (2010-Jul-21 20:06:17)
                                hat bei keine dieser Extensions
                                Nur das VC9 und das soll mal laut php.net nicht für den APache nehmen

                                Da kannste mal sehen, man darf nicht vom VC9er einfach so auf das VC6er Paket schließen. Schöner Mist. Da kannst du nur probieren, beim xampplite "zu klauen". Anhand von Datei(größen)vergleichs-Stichproben solltest du da erstmal rausfinden, welche Version die genommen haben, und ob das zu deiner passt. Notfalls gleich das ganze PHP-Verzeichnis übernehmen.

                                Selbst kompilieren ist nicht so einfach, weil du dir da erstmal die Entwicklerwerkzeuge besorgen musst. Die gibts in bunt gegen ordentlich Geld. Eine (kostenlose) "s/w-Version" des MS-C(++?)-Compilers gabs da wohl auch, aber das C(ohne #)-Zeug liegt außerhalb meines Erfahrungshorizonts.

                                Lo!