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.

85voto

Mihkel Points 866

L'AddType correct pour php est application/x-httpd-php.

AddType  application/x-httpd-php         .php
AddType  application/x-httpd-php-source  .phps

Vérifiez également que votre module php est chargé

LoadModule php5_module        modules/mod_php55.so

Lorsque vous configurez apache, essayez d'afficher la page depuis un autre navigateur - il m'est arrivé que chrome s'entête à mettre en cache le résultat et à télécharger le code source alors que dans un autre navigateur, tout va bien.

26voto

markus Points 1309

Je suis tombé sur ce problème aujourd'hui et aucune des solutions décrites n'a fonctionné pour moi. Voici donc une autre cause possible :

Si vous avez quelque chose comme

AddHandler x-mapp-php6 .php3 .php4 .php .phtml

dans un .htaccess de votre dossier de contenu Web, cela peut empêcher vos scripts PHP de fonctionner. Dans mon cas, le serveur ne connaissait pas le x-mapp-php6 puisque cela .htaccess est un fichier que j'ai importé d'un autre hébergeur lorsque j'ai transféré le contenu du site.

Il suffit de retirer le AddHandler de la ligne .htaccess Le fichier a résolu le problème pour moi.

16voto

Ravi Shankar Points 161

Après avoir beaucoup lutté, j'ai finalement résolu le problème.

Si vous êtes invité à télécharger un .php au lieu de l'exécuter, alors voici la solution idéale : Je suppose que vous avez déjà installé PHP5 et que vous obtenez toujours cette erreur.

$ sudo su
$ a2enmod php5

C'est ici.

Mais si vous obtenez toujours l'erreur :

Config file php5.conf not properly enabled: /etc/apache2/mods-enabled/php5.conf is a real file, not touching it

alors faites ce qui suit :

Il s'avère que les fichiers ne devraient pas être stockés dans mods-enabled mais devraient plutôt être stockés dans mods-available . Un lien symbolique doit alors être créé dans mods-enabled, pointant vers le fichier stocké dans mods-available.

Commencez par retirer l'original :

$ mv /etc/apache2/mods-enabled/php5.conf /etc/apache2/mods-available/

Créez ensuite le lien symbolique :

$ ln -s /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php5.conf

J'espère que votre problème est résolu.

7voto

Sam Azer Points 166

Jetez un coup d'œil à vos directives addtype.

Il me semble qu'Apache dit au navigateur qu'il envoie un type de document d'application/php pour les scripts avec des extensions comme .php5. En fait, Apache est censé dire au navigateur que le scripts sort text/html.

Essayez ceci, s'il vous plaît :

AddType text/html .php

En ce qui concerne la suggestion ci-dessus de dire au navigateur que vous produisez un script PHP : Cela m'a semblé être une idée inhabituelle. J'ai fait une recherche sur Google et j'ai trouvé qu'il y avait pas mal de discussions à ce sujet sur le web. Apparemment, il y a des cas où vous pourriez vouloir dire que vous envoyez un script PHP (même si Apache est censé exécuter le script et émettre du text/html,) et il y a aussi des cas où le navigateur ne reconnaît tout simplement pas ce type Mime spécifique.

Vider le cache de votre navigateur est toujours une bonne idée.

Au cas où cela serait utile, voici une copie de mon fichier /etc/httpd/conf.d/php.conf d'un serveur exécutant CentOS 5.9 :

#        
# PHP is an HTML-embedded scripting language which attempts to make it                                             
# easy for developers to write dynamically generated webpages.                                                  
#
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps

7voto

user252566 Points 61

Si votre .htaccess a quelque chose comme ceci ... AddHandler application/x-httpd-php53 .php .php5 .php4 .php3 puis le commenter et essayer de le rafraîchir à nouveau ; cela a marché pour moi...

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