PHP funktioniert in Apache2 nach dem System-Upgrade nicht mehr

14

Kürzlich habe ich mein System von Karmic auf Lucid aktualisiert. Ich glaube, Apache und PHP wurden aktualisiert.

Jetzt kann mein Server keine PHP-Dateien mehr verarbeiten. Bei der Navigation zu diesen wird eher der Download als das Parsen ausgelöst.

Das PHP Modul ist noch in Apache Mods-fähig geladen und ich habe AddType application/x-httpd-php .phpin meiner httpd.conf.

Es gibt keine aussagekräftigen Nachrichten im Apache-Zugriff oder in den Fehlerprotokollen, daher bin ich ratlos.

Jede Hilfe wäre dankbar. Vielen Dank.

Jivings
quelle

Antworten:

17

/var/log/apache2/error.log sollte eine Zeile wie die folgende anzeigen, wenn PHP erfolgreich geladen wurde:

[Di Aug 30 12:53:36 2011] [Hinweis] Apache / 2.2.14 (Ubuntu) PHP / 5.3.2-1ubuntu4.9 mit Suhosin-Patch konfiguriert - Wiederaufnahme des normalen Betriebs

Achten Sie auf das Datum. Wenn es sich um ein Datum aus dem Jahr 2009 handelt, haben Sie etwas falsch konfiguriert.

AddType ist nutzlos, müssen Sie verwenden:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

Siehe dazu auch die Installationsanweisungen auf php.net für Apache 2.x .

Das muss nicht manuell hinzugefügt werden, da das Paket libapache2-mod-php5Folgendes /etc/apache2/mods-available/php5.confenthält:

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

Da es sich um eine Conffile handelt, ist es möglich, dass sie beim Upgrade nicht installiert wird. So beheben Sie die Bereinigung und installieren sie erneut:

sudo apt-get purge libapache2-mod-php5
sudo apt-get install libapache2-mod-php5

Um PHP zu aktivieren, müssen Sie Folgendes ausführen:

sudo a2enmod php5

Starten Sie den Webserver neu, nachdem:

sudo /etc/init.d/apache2 restart

Andere Dinge zu tun:

  • Auf widersprüchliche Einstellungen prüfen in /etc/apache2.
  • Haben Sie Apache aus dem Quellcode erstellt?
  • Führen Sie aus sudo apache2ctl configtest, um Ihre Konfiguration auf Syntaxfehler zu überprüfen
  • Öffnen Sie http: // localhost / server-info , um die geladene Konfiguration und die geladenen Module zu überprüfen. statusDazu muss das Modul geladen sein. Wenn Sie einen Remote-Server ausführen, müssen Sie sich selbst zur Allow fromListe in hinzufügen /etc/apache2/mods-enabled/status.confund den Server anschließend neu starten
Lekensteyn
quelle
Brillant. AFK im Moment, werde dies aber heute Abend testen. Vielen Dank.
Jivings
Gereinigt und neu installiert, ist das Modul in Mods-fähigen geladen, aber ich habe immer noch das gleiche Problem ... Ich kann nichts finden, das in Konflikt geraten würde, und das Include für die conf-Dateien ist definitiv in der apache.conf vorhanden. Hast du noch andere Ideen? Vielen Dank.
Jivings
@Jivings: Einige Debugging-Ideen hinzugefügt
Lekensteyn
Immer noch nicht in der Lage, es herauszufinden. Ich habe jedoch etwas noch Merkwürdigeres entdeckt. Es scheint, dass PHP für einen der eingerichteten virtuellen Hosts einwandfrei funktioniert, obwohl nur ein documentRoot unter / var / www definiert wird. Wie ist das möglich?!
Jivings
1
Sie müssen den Cache Ihres Browsers noch leeren und Apache neu starten.
Francesco
3

Nun, nachdem nichts anderes funktioniert hat und Apache sehr verwirrend wurde, habe ich endlich alle Apache-Pakete gelöscht und neu installiert.

Scheint jetzt gut zu funktionieren, wer weiß, was daran falsch war ...

BEARBEITEN

Ich habe beim erneuten Einrichten der Apache-Konfigurationseinstellungen festgestellt, was nicht stimmt. [Dieser Blogeintrag] [1] erklärt es.

Es stellte sich heraus, dass das userdir-Modul zwar nicht aktiv verwendet wird, der Rest der Site-Dateien sich jedoch in meinem ~ / public_html-Ordner befindet und PHP für alle Inhalte dort deaktiviert wurde.

Ich vermute, dies war eine neue Erweiterung des PHP-Moduls, die in meinen Karmic-Einstellungen nicht vorhanden war.

Jivings
quelle
1
Das sollte mit einem Konfigurationsproblem zusammenhängen. Bei Upgrades /etcwerden afaik keine Dateien kopiert (zumindest hatte jemand ein Problem damit, dass sie /etc/init.d/apache2nicht bei der Neuinstallation erstellt wurden, sondern nur bei der
Bereinigung
Seltsam, dass es vor meinem System-Upgrade dann
funktionierte
wahrscheinlich eine Funktionsänderung dann. Sie können nicht erwarten, dass bei jedem Upgrade alte Konfigurationseinstellungen berücksichtigt werden. Einige Änderungen wären für die Mehrheit sinnvoll, für andere jedoch nicht.
Lekensteyn
Tatsächlich. Vielen Dank, dass Sie mir trotzdem geholfen haben, dem auf den Grund zu gehen, sehr geschätzt :)
Jivings,
1

Die php5.confDatei in /etc/apache2/mods-enabledhat ein paar Zeilen am unteren Rand, die verhindern, dass PHP in einem Benutzerverzeichnis ausgeführt wird. Abhängig von Ihrer Konfiguration kann dies auch Ihr Problem sein. Sie können diese Zeilen einfach auskommentieren und apache2 neu laden

Jeff
quelle