100 votes

Apache télécharge les fichiers php au lieu de les afficher

Informations sur le système d'exploitation et le serveur :

  • CentOS 6.4 (Final)
  • Apache 2.2.15
  • PHP 5.5.1

J'avais précédemment installé php 5.3.x mais j'ai décidé de faire une mise à jour. J'ai d'abord désinstallé php 5.3.x, puis installé php 5.5.1, mais une fois l'installation terminée, Apache n'a pas analysé les fichiers php, il les a simplement téléchargés. J'ai vérifié des questions similaires ici dans stackoverflow mais aucune d'entre elles ne m'a aidé jusqu'à présent.

Pour mémoire, j'ai les lignes suivantes dans mon httpd.conf et mon php.conf qui devraient faire fonctionner php mais ne le font pas :

AddHandler application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php-source .phps
AddHandler php5-script .php

J'apprécierais vraiment toute aide. Merci.

EDITAR:

J'ai ces lignes dans le php.conf

<IfModule !worker.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

EDITAR:

En retirant le

AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml

apache ne télécharge plus le fichier. Maintenant, apache affiche le code source, mais pas en totalité, juste une partie. J'ai ajouté

AddType text/html .php

mais pas de chance.

1voto

Zeth Points 146

Ok... Je sais qu'il y a déjà 1.000.000 de réponses à cette question, - mais j'ai passé au moins 6 heures effectives à la résoudre ; et j'ai cherché sur Google des centaines de fois et je n'ai pas trouvé un seul post à ce sujet. Je me suis donc dit que j'allais ajouter la solution à mon problème ici.

La conclusion

Si j'ai commenté ces deux lignes dans mes fichiers .conf, dans le fichier /etc/apache2/[[SERVER-NAME].conf -fichier :

php_admin_value engine Off
IPCComTimeout 31

Je n'ai aucune idée de ce qu'ils font ou comment ils en sont arrivés là, - mais c'est dans chacun de mes .conf -files. Et si j'enlève ces lignes et s'assurer qu'il y a un lien symbolique en /etc/apache2/sites-enabled/ -Dans ce cas, il ne télécharge pas le fichier index.php et tout fonctionne comme il se doit.

L'histoire complète

J'ai installé VirtualMin sur un VPS Ubuntu 16.04. J'ai effectué une mise à jour vers la version 7.2 de PHP. Peu de temps après, j'ai mis à jour la version Ubuntu et j'ai rencontré une erreur 'Kernel Offset : Disabled' - erreur. J'ai donc dû supprimer la dernière version d'Ubuntu, - et lorsque mon système d'exploitation a redémarré : BOOM ! J'ai eu l'erreur dont parle son post : Pour chaque site sur mon VPS, il a simplement téléchargé l'index.php au lieu de l'afficher.

J'ai essayé toutes sortes de choses :

  • J'ai supprimé PHP7.2 et installé PHP5.6 (je sais maintenant que la version de PHP n'a rien à voir avec le problème ; c'est la configuration d'apache qui doit être modifiée).
  • J'ai essayé d'activer et de désactiver les modules apache, sur l'installation existante, mais sans succès.
  • Alors je suppression complète d'apache et je l'ai réinstallé, où - après le problème était toujours là !
  • J'ai essayé de jouer avec la configuration du serveur virutal dans VirtualMin (Webmin >> Serveurs >> Serveur Web Apache).
  • J'ai vérifié la configuration sur un seul serveur virtuel ( Virtualmin >> System Settings >> Re-Check Configuration )... Cette étape est assez intéressante, puisqu'elle indique quel module d'Apache est manquant ; après quoi je peux l'activer avec a2enmod [MODULE_NAME] . Et j'ai trouvé le nom du module en cherchant sur Google. J'ai dû activer environ 6 à 8 modules, avant de passer cette étape de la validation - et cela a pris quelques minutes avant que le cache ne soit épuisé, - donc faire cela était une étape fastidieuse.
  • Et enfin, j'ai compris la conclusion écrite ci-dessus - avec les liens symboliques, - et j'ai réussi à la faire fonctionner. J'ai dû le faire pour chaque site sur mon VPS, cependant.

1voto

Dia Points 191

J'ai eu ce problème et si vous n'avez jamais joué avec les paramètres de configuration de votre serveur, alors votre problème est à 90% dans votre .htaccess fichier

Vous pouvez soit modifier .htaccess LOCALEMENT, ou le supprimer (LOCALEMENT).

1voto

TomoMiha Points 31

Si vous avez virtualmin, essayez de commenter ces lignes dans votre configuration apache dans /etc/apache2/sites-available

  #RemoveHandler .php
  #RemoveHandler .php7.0
  #php_admin_value engine Off

0voto

Slip Points 1

J'ai eu un problème similaire à celui du PO lors de la mise à niveau de php5 d'une ancienne version vers 5.5.9, qui est la version installée avec Mint 17.

J'utilise une configuration LAMP sur une machine de mon réseau local, que j'utilise pour prévisualiser les modifications apportées aux sites Web avant de les télécharger sur le serveur réel. Je maintiens donc un miroir local parfait du site réel.

Après la mise à jour, des fichiers qui s'exécutent et s'affichent parfaitement sur le site actuel ne s'affichent pas, ou n'affichent que du html sur la machine locale. Le PHP n'était pas analysé. La commande phpinfo() fonctionnait, je savais donc que php fonctionnait autrement. Le journal ne génère aucune erreur. L'affichage de la source de la page m'a montré le code php réel.

J'avais construit une page test.php qui contenait le code suivant :

<?php phpinfo(); ?>

Cela a fonctionné. Puis j'ai découvert que lorsque j'ai changé <?php a <? la commande ne fonctionnait plus. Tous mes sites php utilisent <? au lieu de <?php ce qui n'est peut-être pas idéal, mais c'est la réalité. J'ai résolu le problème en allant dans /etc/php5/apache2 , en recherchant "short_open_tag" et en changeant la valeur de Off à On.

0voto

Cosmo Arun Points 164

Si aucune des méthodes ci-dessus ne fonctionne,

essayez de commenter la ligne

SetHandler ....

et redémarrez apache en utilisant

/etc/init.d/httpd restart

Cela devrait fonctionner !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X