web-dev-qa-db-fra.com

Apache montre le code php au lieu d'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 script php simple:

<?php phpinfo(); ?>

Mais lorsque j'essaie de l'exécuter avec http://127.0.0.1/phpinfo.php, il affiche simplement le code source au lieu de l'exécuter. J'utilise Apache2, PHP 5 et Windows Vista. J'ai cherché partout sur Internet sans succès et me cogne presque la tête contre le mur. Quelqu'un peut-il me sauver d'une commotion cérébrale?

Lignes éditées:

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"
81
imulsion

Vous devez activer php! Vérifiez le dossier mods-enabled dans le répertoire Apache (par défaut:/etc/Apache2 /) pour voir si vous trouvez un fichier nommé php. Je ne me souviens pas de l'extension mais je pense que c'est .so.

Vérifiez également var/log/Apache2/error.log pour voir si vous avez des erreurs.

74
Daniel Figueroa

Wow, beaucoup de solutions ici! Voici ce que j'ai fait sur Ubuntu 16.04 :

Sudo apt-get install php libapache2-mod-php
Sudo a2enmod mpm_prefork && Sudo a2enmod php7.0
Sudo service Apache2 restart
37
helmy

Pour PHP 7 (peut s'appliquer également aux versions précédentes), mais je devais le faire:

Ajoutez ceci au bas de /etc/Apache2/Apache2.conf 

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

Exécutez ceci depuis le terminal:

Sudo a2dismod mpm_event && Sudo a2enmod mpm_prefork && Sudo a2enmod php7

Ensuite, n'oubliez pas de redémarrer Apache pour qu'il sache que vous avez modifié des éléments:

Sudo service Apache2 restart

Ceci est un résumé de: https://www.atlantic.net/community/howto/try-php7-lamp-ubuntu-14-04/

25
RyanNerd

ouvrir le fichier

/etc/Apache2/httpd.conf

et changer

#LoadModule php5_module libexec/Apache2/libphp5.so

dans

LoadModule php5_module libexec/Apache2/libphp5.so

Alors désactivez le chargement du module PHP dans httpd.conf

23
inigo333

J'ai trouvé cela pour résoudre mon problème lié. Je l'ai ajouté à la section <Directory> correspondante:

<IfModule mod_php5.c>
    php_admin_flag engine on
</IfModule>
5
Pawel

Une réponse différente qui a fonctionné pour moi. Est-ce que, installer [Sudo] apt-get install libapache2-mod-php5.X 

5
Simon Mohoalali

Très bien, si vous avez essayé ce que l'on vous a dit plus haut ou plus tôt (qui sont des raisons possibles) et que le code reste affiché au lieu de l'exécuter, il y a une chose que vous faites mal et qui n'a pas encore été résolue ..__ L'URL que vous avez utilisé pour accéder à votre code php; Certaines personnes essaient d'exécuter leur code php en faisant simplement glisser le fichier .php dans le navigateur Web. Ceci est une mauvaise pratique et pourrait conduire à ce genre de problème . si vous avez enregistré un fichier en tant que "test.php" dans le dossier C: // wamp/www, vous devez accéder à ce fichier de cette façon: localhost: //test.php.Ce genre d'erreur se produit lorsque vous y accédez de cette façon: localhost: //wamp/www/test.php

J'espère que j'ai aidé quelqu'un là-bas. o / ~ Daniel

3
DAniel

Afficher ce qui a fonctionné pour moi au cas où aider aiderait quelqu'un sur la route, bien que ce soit un cas inhabituel.

J'avais défini un gestionnaire pour obliger mon hébergeur à utiliser une version de PHP supérieure à celle par défaut. Il y avait 5.1, mais je voulais 5.6 alors j'ai eu ceci:

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

dans mon fichier .htaccess.

Lorsque j'essayais de faire fonctionner mon site localement, le fait que cela se trouve là faisait que le code PHP était envoyé au navigateur. Le supprimer a résolu le problème.

3
evanmcd

Vous pouvez supprimer votre fichier .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’origine du problème. Vous pouvez ensuite ajouter ligne par ligne à partir de votre ancien fichier .htaccess pour voir la cause du problème.

Cela a fonctionné pour moi. Les lignes indiquant à la machine de ne pas afficher les extensions php posaient problème dans mon cas ( RewriteCond et RewriteRule ). Mon ancien fichier .htaccess fonctionnait parfaitement sur un serveur partagé, mais ce problème est apparu lorsque je suis passé à VPS.

2
bokistack

Ce qui a fonctionné pour moi:

Dans httpd.conf actif, trouvez

<IfModule mime_module>
...
</IfModule>

Il manquait le suivant

AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php

Après avoir redémarré Apache, les fichiers .php sont correctement analysés.

1
paul

si le module userdir est activé et que votre site se trouve dans un utilisateur (~/public_html), vous devez vérifier /etc/Apache2/mods-enabled/php5.conf. La partie suivante le fait fonctionner (sous Ubuntu 14.10 utopic):

# Running PHP scripts in user directories is disabled by default
# 
# 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_flag engine Off
#    </Directory>
# </IfModule>
1
user906489

Merci aux autres sur ce fil pour leurs suggestions. En suivant les étapes mentionnées, j’ai constaté que le serveur Apache n’était pas en mesure de signaler une erreur de syntaxe dans un fichier load dans /etc/Apache2/mods-enabled. Il s'avère que php7.0 et php7.1 ont été activés.

a2dismod php7.0
systemctl restart Apache2

et php est rendu correctement à nouveau.

1
djnz0feh

Si vous êtes un utilisateur d'ubuntu, après l'installation d'Apache, vous devez exécuter la commande suivante dans la nouvelle installation.

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

Dans mon cas, ça fonctionne bien.

1
Hasan Baig

J'ai eu le même problème. Lorsque je lance un fichier php, le navigateur Web m'a montré le code php au lieu de l'exécuter. J'avais essayé plusieurs fois: désinstaller/réinstaller wampserver64, contourner les paramètres/modules PHP/Apache, etc. alt + shift + R "pour le chrome. Il essayait d'exécuter mon fichier php tel que: "fichier /// C:/wamp64/www/bla/bla .." dans la barre d'adresse de mon chrome. C'était mon problème. J'ai fait les modifications conformément à la page Configuration de Notepad ++ pour exécuter php sur localhost? . Mon problème était résolu. Mais après 2 jours .. 

0
mechanic

Solution Debian 9:

touch /etc/Apache2/conf-available/php.conf 

Ajouter au fichier des lignes suivantes:

<IfModule mod_php5.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>
<IfModule mod_php.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>

Puis lancez:

a2enconf php && service Apache2 restart
0
mrDinkelman

J'ai eu le même problème, causé par la configuration par défaut du module suphp sous Debian/Ubuntu. Il contenait suPHP_Engine off pour tout le répertoire/usr/share, ce qui entraînait l'affichage des sources PHP dans le navigateur. Désactiver avec a2dismod suphp était la solution provisoire.

0
Torsten Knodt

Apache affiche le code php au lieu d'exécuter Problème corrigé

1. Ouvert php5.6 conf ou php7.x conf

# commande suivante:

$ Sudo vi /etc/Apache2/mods-enabled/php5.6.conf

2. Commenté lignes suivantes

enter image description here

3. Redémarrage du serveur

Redémarrage du service $ Sudo Apache2

4 Enjoy :)

0
Matthew Farrell

Parfois, si vous avez des conflits de version php, cela se produit .__ Pour résoudre ce problème, suivez les étapes ci-dessous. 

Étape 1: Yum liste installée | grep 'php'

si vous avez plusieurs versions de php comme php 5.6 et php 7.0, ce conflit se produira 

Étape 2: supprimez ** votre version php **

Étape 3: Redémarrez ensuite apapche /etc/init.d/httpd restart ou service Apache2 restart

0
sachin_ur

Cela m’arrivait aussi lors de l’exécution de $ _POST dans MAMP. Tous mes fichiers .ini et httpd ont tous été configurés correctement. Si vous manipulez des formulaires et que vous avez un document HTML et que vous publiez les informations sur un gestionnaire de formulaires php exécutant $ POST, assurez-vous que vous exécutez le fichier html à partir de localhost via votre serveur, et pas uniquement localement. 

C’est un raccourci que j’ai fait pour exécuter des documents html, en cliquant simplement sur le fichier html de mon répertoire et en le lançant dans mon navigateur Web. En réalité, pour vérifier si php est traité dans votre formulaire, vous devez exécuter votre html via vos serveurs. Un protocole très simple que j'ai négligé.

Exemple:

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

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

Maintenant, le php devrait être traité une fois que vous avez cliqué sur votre bouton d'envoi

0
maidenastraea

Exécutez Xampp (Apache) en tant qu'administrateur. Dans Google Chrome tapez: 

localhost/<insert folder name here>/<insert file name>

c'est-à-dire si le dossier que vous avez créé est "LearnPhp", le fichier est "chapitre1.php", puis tapez 

localhost/LearnPhp/chapter1.php

J'ai créé ce dossier dans le dossier xampp du dossier htdocs créé lors du téléchargement de xampp. 

0
Aquasar