web-dev-qa-db-fra.com

PHP ne fonctionne pas dans Apache2 après la mise à niveau du système

J'ai récemment mis à niveau mon système de Karmic à Lucid. Cela impliquait Apache et PHP en train d'être mis à jour, je crois.

Maintenant, mon serveur est incapable de gérer les fichiers PHP. Toute navigation vers ces fichiers déclenche le téléchargement plutôt que l'analyse.

Le module PHP est toujours chargé dans Apache activé pour les mods et j'ai AddType application/x-httpd-php .php dans mon httpd.conf.

Il n'y a pas de message significatif dans l'accès Apache ni dans les journaux d'erreurs, donc je suis stumped.

Toute aide serait appréciée. Merci.

14
Jivings

/var/log/Apache2/error.log devrait afficher une ligne comme celle ci-dessous si PHP a été chargé avec succès:

[Mar Août 30 12:53:36 2011] [notice] Apache/2.2.14 (Ubuntu) PHP/5.3.2-1ubuntu4.9 avec Suhosin-Patch configuré - reprise des opérations normales

Faites attention à la date, si c'est quelque chose à partir de 2009, vous avez mal configuré quelque chose.

AddType est inutile, vous devez utiliser:

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

Voir aussi le instructions d'installation sur php.net pour Apache 2.x .

Vous ne devriez pas avoir besoin d'ajouter que manuellement, le paquetage libapache2-mod-php5 installe /etc/Apache2/mods-available/php5.conf contenant:

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

Comme il s'agit d'un fichier, il est possible qu'il ne soit pas installé avec la mise à niveau. Pour résoudre ce problème , purgez-le puis réinstallez-le:

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

Pour activer PHP, vous devez exécuter:

Sudo a2enmod php5

Redémarrez le serveur Web après:

Sudo /etc/init.d/Apache2 restart

Autres choses à faire:

  • vérifiez les paramètres en conflit dans /etc/Apache2.
  • avez-vous construit Apache à partir des sources?
  • Exécutez Sudo Apache2ctl configtest pour vérifier les erreurs de syntaxe dans votre configuration.
  • Ouvrez http: // localhost/server-info pour vérifier la configuration et les modules chargés. Le module status doit être chargé pour cela. Si vous utilisez un serveur distant, vous devez vous ajouter à la liste Allow from dans /etc/Apache2/mods-enabled/status.conf, puis redémarrer le serveur.
17
Lekensteyn

Eh bien, après que rien d'autre ne fonctionnait et qu'Apache devienne très déroutant, j'ai finalement purgé tous les paquets Apache et les ai réinstallés.

Semble fonctionner bien maintenant, qui sait ce qui n'allait pas ...

EDIT

J'ai découvert ce qui n'allait pas lorsque j'ai reconfiguré mes paramètres de configuration Apache. [Cette entrée de blog] [1] l'explique.

Il s'avère que bien que le module userdir ne soit pas utilisé activement, les autres fichiers du site résident dans mon dossier ~/public_html et que php était désactivé pour tout ce qu'il contenait.

Je suppose que cela doit être un ajout récent au module php qui n'était pas présent dans mes paramètres karmiques.

3
Jivings

le fichier php5.conf dans /etc/Apache2/mods-enabled a quelques lignes en bas qui empêchent php de s'exécuter dans un répertoire utilisateur. Par conséquent, en fonction de votre configuration, cela pourrait également être votre problème. Vous pouvez simplement commenter ces lignes et Apache2 recharger

1
Jeff