153 votes

Apache affiche le code PHP au lieu de l'exécuter

J'ai récemment essayé d'installer PHP et Apache sur mon ordinateur. Après plusieurs heures, ils sont installés. J'ai modifié les fichiers httpd.conf et php.ini comme tout le monde le dit. J'ai ensuite créé un simple script :

<?php phpinfo(); ?>

Mais quand j'essaie de l'exécuter avec http://127.0.0.1/phpinfo.php il affiche juste le code source au lieu de l'exécuter. J'utilise Apache 2, PHP 5 et Windows Vista.

LIGNES ÉDUITES :

PHP.INI :

short_open_tag = On

HTTPD.CONF

LoadModule php5_module "C:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PHPIniDir "C:/php"

3voto

Hasan Baig Points 350

Si vous êtes un utilisateur d'Ubuntu, après avoir installé apache doit exécuter la commande suivante dans la nouvelle installation

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

Dans mon cas, cela fonctionne bien.

3voto

evanmcd Points 655

Je poste ce qui a fonctionné pour moi au cas où cela aiderait quelqu'un à l'avenir, bien que ce soit un cas inhabituel.

J'avais configuré un gestionnaire pour forcer mon hébergeur à utiliser une version de php supérieure à celle par défaut. Il y avait la 5.1, mais je voulais la 5.6 et j'avais donc ceci :

<FilesMatch \.php$>
    SetHandler php56-cgi
</FilesMatch>

dans mon fichier .htaccess.

Lorsque j'ai essayé d'exécuter mon site localement, le fait d'avoir ce message a entraîné l'affichage de code php dans le navigateur. L'enlever a résolu le problème.

3voto

Adam Winter Points 973

Pour PHP7 et Apache2.4, c'est tout ce que vous devez faire :

sudo vim /etc/httpd/conf/httpd.conf

Allez tout en bas et insérez le texte suivant (tout seul) :

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

Ensuite, redémarrez Apache pour charger la nouvelle configuration :

sudo service httpd restart

Apache exécutera désormais toutes les requêtes HTTP/S avec PHP. Si vous n'avez que des fichiers html, css, et php, alors cela fonctionnera très bien pour vous. Si vous utilisez d'autres langages, vous devrez adapter la correspondance des fichiers à votre situation. J'ai testé ceci avec phpMyAdmin et cela fonctionne bien.

Aucun de ces autres trucs dont les gens parlent ici n'était nécessaire pour moi. Quand j'ai mis le truc "AddType Application....." au bon endroit, Apache m'a simplement dit que ce module était déjà chargé et l'a ignoré.

Vous trouverez de plus amples informations ici : https://httpd.apache.org/docs/2.4/mod/core.html#filesmatch

Mon installation s'est déroulée comme suit :

sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd

Vous devriez également lire ceci, si vous ne l'avez pas fait : https://httpd.apache.org/docs/current/howto/htaccess.html#when

2voto

bokistack Points 21

Vous pourriez supprimer votre .htaceess et laisser le système en créer un nouveau (vierge ou de base). Il se peut que certaines lignes que vous avez ajoutées soient des déclarations incorrectes, ou que quelque chose d'autre à l'intérieur soit à l'origine du problème. Vous pouvez alors ajouter ligne par ligne à partir de votre ancien fichier .htaccess pour voir ce qui a causé le problème.

Cela a marché pour moi. Les lignes disant à la machine de ne pas afficher les extensions php étaient un problème dans mon cas ( RewriteCond y RewriteRule ). Mon ancien .htaccess fonctionnait très bien sur un serveur mutualisé, mais ce problème est apparu lorsque je suis passé au VPS.

2voto

maidenastraea Points 21

Cela m'arrivait également lorsque j'exécutais $_POST dans MAMP. Tous mes fichiers .ini et httpd étaient correctement configurés. Si vous gérez un formulaire, que vous avez un document html et que vous envoyez les informations à un gestionnaire de formulaire php exécutant $POST, assurez-vous que vous exécutez le fichier html depuis l'hôte local via votre serveur, et pas seulement localement.

C'était un raccourci que je faisais pour exécuter des documents html, en cliquant simplement sur le fichier html dans mon répertoire et en le lançant dans mon navigateur web, alors qu'en réalité pour vérifier si le php est traité dans votre formulaire, vous devez exécuter votre html à travers vos serveurs. Un protocole très simple que j'ai négligé.

Exemple :

Faux : file:///Applications/MAMP/htdocs/form/form.html

Bien : http://localhost:your port number/form/form.html

Maintenant, le php devrait être traité une fois que vous aurez cliqué sur le bouton "soumettre".

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