14 votes

PHP ne fonctionne pas dans Apache2 après une mise à jour du système

J'ai récemment mis à niveau mon système de Karmic à Lucid. Cela a impliqué la mise à jour d'Apache et de PHP, je crois.

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

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

Il n'y a pas de messages significatifs dans les journaux d'accès ou d'erreur d'Apache, je suis donc dans l'impasse.

Toute aide serait appréciée. Merci.

17voto

Lekensteyn Points 162346

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

[Tue Aug 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 de 2009, vous avez mal configuré quelque chose.

AddType est inutile, vous devez utiliser :

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

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

Vous ne devriez pas avoir besoin de l'ajouter 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 à jour. Pour corriger cela purger puis l'installer à nouveau :

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érifier les paramètres conflictuels dans /etc/apache2 .
  • Avez-vous construit Apache à partir des sources ?
  • Exécuter sudo apache2ctl configtest pour vérifier l'absence d'erreurs de syntaxe dans votre configuration
  • Ouvrir http://localhost/server-info pour vérifier la configuration et les modules chargés. Le site status doit être chargé pour cela. Si vous exécutez un serveur distant, vous devez vous ajouter à la liste de diffusion de Allow from liste en /etc/apache2/mods-enabled/status.conf et redémarrez ensuite le serveur

3voto

Jivings Points 325

Après que rien d'autre n'ait fonctionné et qu'Apache soit devenu très confus, j'ai finalement purgé tous les paquets Apache et les ai réinstallés.

Il semble qu'il fonctionne bien maintenant, qui sait ce qui n'allait pas avec lui.....

EDIT

J'ai découvert ce qui n'allait pas lorsque j'ai redéfini mes paramètres de configuration d'Apache. [Cet article de blog][1] l'explique.

Il s'avère que, bien que le module userdir ne soit pas activement utilisé, le reste des fichiers du site se trouve dans mon dossier ~/public_html, et php était désactivé pour tout ce qui s'y trouvait.

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

1voto

Jeff Points 11

El php5.conf dans /etc/apache2/mods-enabled a quelques lignes en bas de page qui empêchent l'exécution de php à l'intérieur d'un répertoire utilisateur, donc en fonction de votre configuration, cela pourrait aussi être votre problème. Vous pouvez simplement commenter ces lignes et recharger Apache2.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X