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.