Raucherkrebs: Apache auf Linux gibt Fehlermeldung

Hallo,

habe gerade mal Apache 2 auf Linux installiert.
Wenn ich den Apache starte kommt:

Starting web server: Apache2Syntax error on line 404 of /etc/apache2/apache2.conf:
Cannot load /usr/lib/modules/libphp4.so into server: /usr/lib/modules/libphp4.so: cannot open shared object file: No such file or directory

Was läuft schief?

  1. Hello,

    Starting web server: Apache2Syntax error on line 404 of /etc/apache2/apache2.conf:
    Cannot load /usr/lib/modules/libphp4.so into server: /usr/lib/modules/libphp4.so: cannot open shared object file: No such file or directory

    Was läuft schief?

    Hast Du nachgeschaut, ob das fertig gebuete Objekt vorhanden ist an der bemängelten Stelle und wer Zugriff darauf hat? Da PHP i.d.R. individualisiert compiliert werden muss, solltest Du das vielleicht vorher machen.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hast Du nachgeschaut, ob das fertig gebuete Objekt vorhanden ist an der bemängelten Stelle und wer Zugriff darauf hat? Da PHP i.d.R. individualisiert compiliert werden muss, solltest Du das vielleicht vorher machen.

      Im Ordner /usr/lib/ gibt es keinen Order "modules".
      Da haben wirs. Was nun?

      1. Hello,

        Im Ordner /usr/lib/ gibt es keinen Order "modules".
        Da haben wirs. Was nun?

        Überhaupt erst einmal nach den gefordertzen Mudulen (shared object = so) suchen.
        Dazu die httpd.conf oder apache.conf oder apache2.conf (oder ´wie die gerade heißt) öffnen und in der Section 2 nach den Einstellungen suchen.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Überhaupt erst einmal nach den gefordertzen Mudulen (shared object = so) suchen.

          Habe ich gemacht. find / -name libphp4.so
          hat nichts gefunden.

          Dazu die httpd.conf oder apache.conf oder apache2.conf (oder ´wie die gerade heißt) öffnen und in der Section 2 nach den Einstellungen suchen.

          Was meinst du mit Sektion2? In meiner apache2.conf gibt es keine derartige Sektion.

          Warum geht der Befehl dpkg-reconfigure -plow apache2   wie hier:

          http://www.debianhowto.de/howtos/de/debian_lamp-sarge/debian-lamp_apache.html

          beschrieben, nicht ?

          1. Hi,

            Überhaupt erst einmal nach den gefordertzen Mudulen (shared object = so) suchen.

            Habe ich gemacht. find / -name libphp4.so
            hat nichts gefunden.

            Dann installier es halt(, oder kommentiere den Eintrag in der Config aus, wenn du PHP nicht benötigst):

            apt-get install php4 (und evtl. einige Zusatzmodule wie php4mysql)

            Grüße aus Barsinghausen,
            Fabian

            --
            "It's easier not to be wise" - < http://www.fabian-transchel.de/kultur/philosophie/ialone/>
            1. Dann installier es halt(, oder kommentiere den Eintrag in der Config aus, wenn du PHP nicht benötigst):

              Na klar benötige ich php. Das ist ja der hauptgrund warum ich Apache installiere.

              apt-get install php4 (und evtl. einige Zusatzmodule wie php4mysql)

              apt-get install php4 hatte ich noch vor der installation von Apache gemacht. Hat denn hier niemand Debian?

          2. Hello,

            Was meinst du mit Sektion2? In meiner apache2.conf gibt es keine derartige Sektion.

            Mmmh.
            Dann ist Deine Config wohl auch separiert aufgebaut?

            Such mal das Verzeichnis '/etc/apache2/mods-available/'

            das ist ein Teil der ehemaligen "Section 2"

            Wenn dort kein Vermerk für das PHP-Modul steht, wo es zu finden sein soll und es in 'mods-enabled' keinen Link darauf gibt, dann mus es entsprechend eingetragen und vorher natürlich gebaut werden.

            Die ehemalige "Section 3" ist dann ausgelagert in

            '/etc/apache2/sites-available/'
            und
               '/etc/apache2/sites-enabled/'

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. hallo Tom,

              Dann ist Deine Config wohl auch separiert aufgebaut?

              eventuell verstehst du, was der Raucherkrebs für eine Konfiguration hat, wenn du dir die entsprechende Stelle im Apache-Featureartikel mal anschaust ...

              Such mal das Verzeichnis '/etc/apache2/mods-available/'
              das ist ein Teil der ehemaligen "Section 2"

              Jaein. Die gesuchte Anweisung für PHP sollte in /etc/apache2/mods-enabled/php4.conf liegen, falls an der Konfiguration nichts Spezielles verändert wurde.

              Grüße aus Berlin

              Christoph S.

              1. Hello,

                Jaein. Die gesuchte Anweisung für PHP sollte in /etc/apache2/mods-enabled/php4.conf liegen, falls an der Konfiguration nichts Spezielles verändert wurde.

                Aber dafür sollte doch der Pfad auf das Modul in mods-available vorhanden sein, oder?

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. hallo Tom,

                  Die gesuchte Anweisung für PHP sollte in /etc/apache2/mods-enabled/php4.conf liegen, falls an der Konfiguration nichts Spezielles verändert wurde.
                  Aber dafür sollte doch der Pfad auf das Modul in mods-available vorhanden sein, oder?

                  Nein. Das ist ursprünglich für irgendwelche Zusätze gedacht, beispielsweise, wenn mit mod_jk ein Tomcat angesprochen werden soll. Man muß diesem Aufbau nicht unbedingt folgen, ich habe beispielsweise dieses Verzeichnis ganz und gar gestrichen.

                  Grüße aus Berlin

                  Christoph S.

                2. Hallo,

                  ich habe kurzen Prozess gemacht und diese phplib.so Zeile auskommentiert. Jetzt klappt es fast.

                  Wenn ich nun meinen virtual Server aufrufe kommt die Fehlermeldung:

                  Forbidden

                  You don't have permission to access / on this server.

                  Einen directoryIndex habe ich angegeben. Was kann der Grund sein ?

                  1. Mein Virtual Server sieht so aus:

                    <VirtualHost 127.0.0.1>
                      ServerName testserver
                      DocumentRoot "/home/neinstein/homepage/testserver"
                    </VirtualHost>

                    1. hallo,

                      <VirtualHost 127.0.0.1>
                        ServerName testserver
                        DocumentRoot "/home/neinstein/homepage/testserver"
                      </VirtualHost>

                      Ist denn "/home/neinstein/homepage/testserver" freigegeben? Das heißt: existiert denn für dieses Verzeichnis ein <Directory>-Container in deiner apache2.conf?

                      Grüße aus Berlin

                      Christoph S.

                      1. Ist denn "/home/neinstein/homepage/testserver" freigegeben? Das heißt: existiert denn für dieses Verzeichnis ein <Directory>-Container in deiner apache2.conf?

                        Hmm.

                        Also ich habe diese Directory container bei mir drin:

                        <Directory "/usr/share/apache2/icons">
                            Options Indexes MultiViews
                            AllowOverride None
                            Order allow,deny
                            Allow from all
                        </Directory>

                        <Directory /home/*/public_html>
                        #       AllowOverride FileInfo AuthConfig Limit
                        #       Options Indexes SymLinksIfOwnerMatch IncludesNoExec
                        #</Directory>

                        1. hallo,

                          Also ich habe diese Directory container bei mir drin:
                          <Directory "/usr/share/apache2/icons">

                          Na gut, das ist für die Icons, wenn ein Verzeichnislisting angezeigt werden soll.

                          <Directory /home/*/public_html>
                          #       AllowOverride FileInfo AuthConfig Limit
                          #       Options Indexes SymLinksIfOwnerMatch IncludesNoExec
                          #</Directory>

                          Das schaust du dir mal bitte genau an. Das erzeugt auf jeden Fall einen Fehler, weil du </Directory> auskommentiert hast.

                          Ja, und wo steht denn nun "/home/neinstein/homepage/testserver"? Dafür brauchst du auch noch so einen <Directory>-Container, sonst bleibt es bei "Zugriff verboten". Im übrigen sollte dir dein log dafür auch Aussagen anbieten.

                          Grüße aus Berlin

                          Christoph S.

                          1. Wozu ist denn dieser Directory container gut?
                            Ich habe doch einen virtual Server.
                            Da steht doch der Pfad drin.

                            1. Auf Windows habe ich ja diese Hostdatei "hosts" im win32 Verzeichnis.

                              Dort kann ich eintragen, dass 127.0.0.1 auf testserver verweist.
                              Wo macht man das auf Linux?

                              1. Nun sieht das ganze bei mir so aus wie unten und ich bekomme immer noch die Mitteilung "Forbidden: You don't have permission to access / on this server."

                                <Directory /home/neinstein/homepage/>
                                    Options Indexes FollowSymLinks
                                    Order Deny,Allow
                                    Deny from All
                                    Allow from 127.0.0.1
                                </Directory>

                                DirectoryIndex index.html index.htm index.php

                                NameVirtualHost 127.0.0.1

                                <VirtualHost 127.0.0.1>
                                  ServerName testserver
                                  DocumentRoot "/home/neinstein/homepage/testserver"
                                </VirtualHost>

                                LoadModule php4_module  /usr/lib/modules/libphp4.so

                                AddType application/x-httpd-php .php

                                1. Hier mal meine gesamte apache2.conf

                                  http://rafb.net/paste/results/VDutIl94.html

                                2. hi,

                                  Nun sieht das ganze bei mir so aus wie unten und ich bekomme immer noch die Mitteilung "Forbidden: You don't have permission to access / on this server."
                                  <Directory /home/neinstein/homepage/>
                                      Options Indexes FollowSymLinks
                                      Order Deny,Allow
                                      Deny from All
                                      Allow from 127.0.0.1
                                  </Directory>

                                  ok, dann ist das Verzeichnis erreichbar für deinen Apache.

                                  DirectoryIndex index.html index.htm index.php

                                  Du hast diese "DirectoryIndex" zweimal in deiner Konfigurationsdatei stehen. Korrigiere das noch.

                                  Im übrigen hast du ja selbst inzwischen herausgefunden, daß es an der Rechtevergabe lag.

                                  Aber du solltest dich wirklich etwas ernsthafter mit "deinem" Apache beschäftigen. Ich glaube, daß aufgrund deiner Fragestellugen mein Apache Artikel für dich noch allerhand beherzigenswerte Hinweise enthält.

                                  Grüße aus Berlin

                                  Christoph S.

                              2. hallo,

                                Auf Windows habe ich ja diese Hostdatei "hosts" im win32 Verzeichnis.

                                Es hängt von deiner Windows-Version ab, wo diese Datei liegt. In WindowsXP ist es %windir%\system32\drivers\etc

                                Dort kann ich eintragen, dass 127.0.0.1 auf testserver verweist.

                                Dort kannst du noch wesentlich mehr eintragen.

                                Wo macht man das auf Linux?

                                /etc/hosts

                                Grüße aus Berlin

                                Christoph S.