PHP non funziona in Apache2 dopo l'aggiornamento del sistema


14

Recentemente ho aggiornato il mio sistema da Karmic a Lucid. Ciò ha comportato l'aggiornamento di Apache e PHP credo.

Ora il mio server non è in grado di gestire i file PHP, qualsiasi navigazione verso di essi sta innescando il download anziché l'analisi.

Il modulo PHP è ancora caricato in Apache mods abilitato e ho AddType application/x-httpd-php .phpnel mio httpd.conf.

Non ci sono messaggi significativi nell'accesso ad Apache o nei log degli errori, quindi sono sconcertato.

Qualsiasi aiuto sarebbe apprezzato. Grazie.

Risposte:


17

/var/log/apache2/error.log dovrebbe mostrare una riga come la seguente se PHP è stato caricato con successo:

[Mar 30 agosto 12:53:36 2011] [avviso] Apache / 2.2.14 (Ubuntu) PHP / 5.3.2-1ubuntu4.9 con Suhosin-Patch configurata - ripresa delle normali operazioni

Fai attenzione alla data, se è qualcosa del 2009, hai configurato male qualcosa.

AddType è inutile, devi usare:

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

Si vedano anche le istruzioni di installazione php.net per Apache 2.x .

Non dovresti aver bisogno di aggiungerlo manualmente, il pacchetto libapache2-mod-php5installa /etc/apache2/mods-available/php5.confcontenente:

<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>

Poiché è un file di configurazione, è possibile che non sia installato con l'aggiornamento. Per risolvere il problema, eliminarlo e installarlo di nuovo:

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

Per abilitare PHP, devi eseguire:

sudo a2enmod php5

Riavvia il server web dopo:

sudo /etc/init.d/apache2 restart

Altre cose da fare:

  • controllare le impostazioni in conflitto in /etc/apache2.
  • hai creato Apache dalla fonte?
  • Esegui sudo apache2ctl configtestper verificare la configurazione per errori di sintassi
  • Apri http: // localhost / server-info per verificare la configurazione e i moduli caricati. Il statusmodulo deve essere caricato per questo. Se stai eseguendo un server remoto, devi aggiungerti Allow fromall'elenco /etc/apache2/mods-enabled/status.confe riavviare il server in seguito

Brillante. AFK in questo momento, ma lo proverò stasera. Grazie.
— Jivings,

Eliminato e reinstallato, il modulo viene caricato in mods-enabled, ma sto ancora riscontrando lo stesso problema ... Non riesco a trovare nulla che sia in conflitto e l'inclusione per i file conf è sicuramente presente in apache.conf. Hai qualche altra idea? Grazie.
— Jivings,

@Jivings: aggiunte alcune idee per il debug
— Lekensteyn,

Ancora incapace di capirlo. Tuttavia ho scoperto qualcosa di ancora più curioso. Sembra che PHP stia funzionando bene per uno degli host virtuali impostati, anche se tutto ciò che fa è definire un documentRoot su / var / www. Com'è possibile?!
— Jivings,

1
Sarà comunque necessario svuotare la cache del browser e riavviare apache.
— Francesco,

3

Bene, dopo che nient'altro ha funzionato e Apache è diventato molto confuso, ho finalmente eliminato tutti i pacchetti Apache e li ho reinstallati.

Sembra funzionare bene ora, chissà cosa c'era che non andava ...

MODIFICARE

Ho scoperto cosa non andava durante la configurazione delle impostazioni di configurazione di Apache. [Questo post di blog] [1] lo spiega.

Si scopre che sebbene il modulo userdir non sia attivamente in uso, il resto dei file dei siti risiede nella mia cartella ~ / public_html e php era disabilitato per tutto ciò che c'era.

Immagino che questa debba essere stata una recente aggiunta al modulo php che non era presente nelle mie impostazioni di Karmic.


1
Ciò dovrebbe essere correlato a un problema di configurazione. Durante gli aggiornamenti, nessun file in /etcviene copiato afaik (almeno, qualcuno ha avuto un problema con il /etc/init.d/apache2non essere creato durante la reinstallazione, solo su purge + install)
— Lekensteyn

Strano che prima del mio aggiornamento del sistema funzionasse ...
— Jivings,

probabilmente una funzione cambia quindi. Non puoi aspettarti che ogni aggiornamento rispetti le vecchie impostazioni di configurazione. Alcune modifiche avrebbero senso per la maggioranza ma non per altre.
— Lekensteyn,

Infatti. Grazie per avermi aiutato ad arrivare in fondo comunque, molto apprezzato :)
— Jivings

1

il php5.conffile in /etc/apache2/mods-enabledha alcune righe in basso che impediscono l'esecuzione di php all'interno di una directory utente, quindi a seconda della configurazione, questo potrebbe essere anche il tuo problema. Puoi semplicemente commentare queste righe e ricaricare apache2

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.