Apache télécharge des 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’ai déjà installé php 5.3.x mais j’ai décidé de mettre à jour. J’ai d’abord désinstallé le php 5.3.x puis installé php 5.5.1 mais après que l’installation terminée apache n’ait pas analysé les fichiers php, il vient de les télécharger. J’ai vérifié des questions similaires ici dans stackoverflow mais aucun d’entre eux ne m’a aidé jusqu’à présent.

Pour la petite histoire, j’ai les lignes suivantes dans mes httpd.conf et php.conf qui devraient faire fonctionner php mais 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. Je vous remercie.

MODIFIER:

J’ai ces lignes dans le php.conf

  LoadModule php5_module modules/libphp5.so   LoadModule php5_module modules/libphp5-zts.so  

MODIFIER:

En enlevant le

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

apache ne télécharge plus le fichier. Apache montre maintenant le code source, mais pas tout. J’ai ajouté

 AddType text/html .php 

mais pas de chance.

Le bon AddType pour php est application / x-httpd-php

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

Assurez-vous également que votre module php est chargé

 LoadModule php5_module modules/mod_php55.so 

Lorsque vous configurez apache, essayez d’afficher la page à partir d’un autre navigateur – j’ai eu des jours où le cache cache obstinément le résultat et le téléchargement du code source se poursuit alors que dans un autre navigateur, tout se passe bien.

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

Si vous êtes invité à télécharger un fichier .php au lieu de l’exécuter, 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 

Ça y est.

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 

puis procédez comme suit:

Les fichiers ne doivent pas être stockés dans les mods-enabled mais doivent plutôt être stockés dans les mods-available . Un lien symbolique devrait alors être créé dans mods-enabled pointant vers le fichier stocké dans mods-available.

Retirez d’abord l’original:

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

Ensuite, créez 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.

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

Si vous avez quelque chose comme

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

Dans un fichier .htaccess de votre dossier de contenu Web, vos scripts PHP peuvent cesser de fonctionner. Dans mon cas, le serveur ne connaissait pas le type x-mapp-php6 , puisque ce fichier .htaccess était quelque chose que j’avais importé d’un autre hébergeur lorsque j’ai transféré le contenu du site Web.

Il suffit de supprimer la ligne AddHandler du fichier .htaccess le résoudre.

S’il vous plaît jeter un oeil à vos directives addtype.

Il me semble qu’Apache dit au navigateur qu’il envoie un type de document application / php pour les scripts avec des extensions comme .php5. En fait, Apache est censé indiquer au navigateur que le script génère du texte / html.

Veuillez essayer ceci:

 AddType text/html .php 

En ce qui concerne la suggestion ci-dessus, vous devriez dire au navigateur que vous produisez un script PHP: Cela me semblait une idée inhabituelle. Je l’ai googlé et j’ai constaté qu’il y avait pas mal de discussions à ce sujet sur le web. Apparemment, il y a des cas où vous voudrez peut-être dire que vous envoyez un script PHP (même si Apache est censé exécuter le script et émettre du texte / html) et que le navigateur ne reconnaît tout simplement pas ce Mime spécifique. Type.

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

Au cas où il serait utile de copier le 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. #  LoadModule php5_module modules/libphp5.so   LoadModule php5_module modules/libphp5-zts.so  # # 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 

Cela peut être dû aux modules manquants requirejs pour votre php. En supposant que php7 soit installé, recherchez les modules php7 disponibles en utilisant

 sudo apt-cache search php7-* 

La commande ci-dessus listera tous les modules PHP7 disponibles pour l’installation. Vous pouvez commencer l’installation de modules comme,

 sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json 

J’ai le même problème. Apache ne charge pas les fichiers php depuis un certain site Web, il suffit de le télécharger. J’ai lu ce post et les réponses et j’ai vu que j’avais cette ligne à la dernière place du fichier .htaccess:

 AddHandler x-mapp-php5.5 .php 

Je l’ai commenté et tout fonctionne bien.

Merci à tous !!!

J’ai déjà eu un problème similaire, après la mise à niveau de 5.3 à 5.4. Mais ma configuration est un peu différente, car j’utilise Debian et utilise fcgid pour gérer les pages PHP, et non le module PHP5 apache / cgi. Donc, après avoir mis à jour, il a également installé php5_cgi, qui est entré en collision avec ma configuration de fcgid, et n’exécutait plus de fichiers PHP.

Je devais désactiver le module Apache et redémarrer Apache

 a2dismod php5_cgi /etc/init.d/apache2 restart 

Une fois que le module php5_cgi était hors de scope, fcgid était capable de servir à nouveau les pages PHP.

Si votre .htaccess a quelque chose comme ça … Application AddHandler / x-httpd-php53 .php .php5 .php4 .php3, puis commentez-le et essayez à nouveau de rafraîchir cela a fonctionné pour moi …

J’ai eu des symptômes similaires, encore une autre solution: dans /etc/apache2/mods-enabled/php5.conf, il y avait un conseil utile dans le commentaire, que j’ai suivi:

 # To re-enable php in user directories comment the following lines # (from  to .) Do NOT set it to On as it # prevents .htaccess files from disabling it. 

J’ai passé deux jours à le suivre et j’ai découvert que je mettais mes scripts PHP dans le mauvais répertoire.

Sur mon installation Ubuntu standard, je mettais les scripts dans /var/www . Ils auraient dû être dans /var/www/html .

Je viens de commencer le travail de PHP, donc je ne sais pas si ma solution concerne le changement de version que vous avez vécu.

cela a résolu le problème pour moi (j’ai php7 installé):

sudo apt-get installer libapache2-mod-php7.0

sudo service apache2 redémarrer

J’ai eu ce problème. Il s’est avéré que j’avais à la fois nginx et apache installés et démarrant automatiquement au démarrage. Le problème était que nginx était d’abord lié au port http, ce qui empêchait Apache de démarrer.

J’ai eu un problème similaire à l’OP lors de la mise à niveau de php5 d’une version antérieure vers la version 5.5.9, qui est la version installée avec Mint 17.

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

Après la mise à niveau, les fichiers qui s’exécutent et s’affichent parfaitement sur le site réel ne s’afficheraient pas ou afficheraient uniquement du code HTML sur l’ordinateur local. PHP n’a pas été analysé. La commande phpinfo () fonctionnait donc je savais que php fonctionnait autrement. Le journal n’a généré aucune erreur. La visualisation de la source de la page m’a montré le code php réel.

J’ai construit une page test.php contenant le code suivant:

Cela a fonctionné. Puis j’ai découvert quand j’ai changé à la commande ne fonctionnait plus. Tous mes sites PHP utilisent au lieu de qui pourrait ne pas être idéal, mais c'est la réalité. J'ai résolu le problème en allant sur / etc / php5 / apache2, en recherchant "short_open_tag" et en changeant la valeur de Off à On.

Si aucun des travaux ci-dessus ne fonctionne,

essayez de commenter la ligne

 SetHandler .... 

et redémarrer apache en utilisant

 /etc/init.d/httpd restart 

Ça devrait marcher!

PHP56

vim /etc/httpd/conf/httpd.conf

 LoadModule php5_module libexec/apache/libphp5.so AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps 

J’ai ce genre de problème. C’est comme ça que je le résous. Après avoir installé Apache, j’ai installé PHP en utilisant cette commande.

 sudo apt-get install php libapache2-mod-php 

il s’exécute correctement mais je demande le fichier .php à Apache, il donne sans exécuter le script PHP .

Ensuite, je vérifie que PHP est activé.

 $ cd /etc/apache2 $ ls -l mods-*/*php* 

mais il n’a montré aucun résultat. Je vérifie les paquets PHP installés.

 $ dpkg -l | grep php| awk '{print $2}' |tr "\n" " " 

Différents types de versions de PHP installées sur mon ordinateur. Ensuite, je supprime certains paquets PHP de ma liste précédente, en utilisant apt-get purge .

 sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json 

Je réinstalle PHP

 sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql 

Vérifiez que le module PHP est chargé

 $ a2query -m php7.0 

s’il n’est pas activé avec:

 $ sudo a2enmod php7.0 

Redémarrer le serveur Apache

 $ sudo systemctl restart apache2 

Enfin, je vérifie le processus PHP sur Apache

créer un fichier vide

 sudo vim /var/www/html/info.php 

Ajoutez ce contenu à info.php & save.

  

Vérifiez sur le navigateur:

http: //localhost/info.php

cela se voit correctement. Je pense que cela aidera n’importe qui.

Si quelqu’un utilise php7 dans un environnement Linux

Assurez-vous d’activer php7

 sudo a2enmod php7 

Redémarrez le service mysql et Apache

 sudo systemctl restart mysql sudo systemctl restart apache2 

Il est également possible que nginx soit en cours d’exécution, mais votre php est configuré pour fonctionner avec Apache. Pour vérifier, exécutez le service nginx status et le service nginx status service apache2 status pour voir qui est en cours d’exécution. Si nginx est en cours d’exécution et qu’apache ne fonctionne pas, lancez simplement sudo service nginx stop; sudo service apache2 start sudo service nginx stop; sudo service apache2 start et votre serveur va maintenant servir les fichiers php comme prévu.

Ok … Je sais qu’il y a déjà 1 000 000 de réponses à ces questions, mais j’ai passé au moins 6 heures effectives à résoudre ce problème; et je l’ai googlé des centaines de fois et je n’ai pas trouvé un seul message à ce sujet. J’ai donc pensé que j’appendais la solution à mon problème ici.

La conclusion

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

 php_admin_value engine Off IPCComTimeout 31 

Je n’ai aucune idée de ce qu’ils font ou comment ils sont arrivés là, mais c’est dans chacun de mes fichiers .conf . Et si je supprime ces lignes et m’assure qu’il y a un lien symbolique dans /etc/apache2/sites-enabled/ -folder, alors il ne télécharge pas l’index.php – et tous les travaux comme il se doit.

L’histoire entière

J’ai VirtualMin installé sur un VPS Ubuntu 16.04. J’ai mis à niveau vers PHP version 7.2. Peu de temps après, j’ai mis à jour la version d’Ubuntu et créé une erreur “Kernel Offset: Disabled”. J’ai donc dû supprimer la dernière version d’Ubuntu, et quand mon système d’exploitation a redémarré: BOOM! J’ai eu l’erreur dont son article parle: Pour chaque site sur mon VPS, il a simplement téléchargé le fichier index.php au lieu de le montrer.

J’ai essayé toutes sortes de choses:

  • Suppression de PHP7.2 et installation de PHP5.6 (je sais maintenant que la version de PHP n’a rien à voir avec cela, c’est la configuration apache qui a besoin d’être travaillée).
  • Essayé d’activer et de désactiver les modules apache, sur l’installation existante, mais sans chance.
  • Ensuite, j’ai complètement retiré apache et je l’ai réinstallé , après quoi le problème était toujours là!
  • Essayé de jouer avec la configuration du serveur Virutal dans VirtualMin (Webmin >> Serveurs >> Apache Webserver).
  • Vérifié la configuration sur un seul serveur virtuel (Virtualmin >> Paramètres système >> Vérifier la configuration) … Cette étape était très agréable, car elle indiquait quel module dans Apache était manquant; où-après je pourrais l’activer avec a2enmod [MODULE_NAME] . Et j’ai trouvé le nom du module par Google. J’ai dû activer environ 6 à 8 modules, avant que je ne passe cette étape de la validation – et cela a pris quelques minutes avant que le cache ne soit épuisé, ce qui était une opération fastidieuse.
  • Et enfin, j’ai compris les conclusions écrites ci-dessus – ainsi que les liens symboliques – et ensuite je l’ai fait fonctionner. Je devais passer par là pour chaque site sur mon VPS, cependant.

Si votre .htaccess a quelque chose comme ça

 AddType application/x-httpd-ea-php56 .php .php5 .phtm .html .htm