2 votes

PHP fonctionne en ligne de commande mais pas dans le navigateur

Lorsque j'exécute un script de base 'hello world' php script à partir de la ligne de commande, l'exécution de la commande php test.php il renvoie une page html valide. Cependant, lorsque j'essaie d'y accéder par un navigateur, j'obtiens le texte du script php script renvoyé, plutôt que du html valide.

Le script php "test.php" est le suivant :

<html>
<head>
  <title>PHP Test</title>
</head>
<body>
  <?php

     echo '<p>Hello World</p>';

   ?>
</body>
</html>

J'utilise Apache sur Raspbian.

1voto

Alex Points 6039

PHP peut fonctionner dans différents modes de fonctionnement.

Il peut être un interprète de console lorsque vous l'exécutez à partir de l'invite de commande, ou il peut fonctionner comme un CGI, ou encore comme un service. php-fpm Il peut fonctionner en tant que module d'Apache ou être un serveur web lui-même.

La façon la plus simple d'exécuter vos scripts php dans un navigateur est d'utiliser son serveur web intégré.
Il suffit de courir php -S ip.ip.ip.ip:port -t /path/to/directory/where/php/files/lives substitut ip.ip.ip.ip avec l'adresse IP attribuée à Raspberry Pi (à obtenir à partir de ifconfig ) et remplace port avec le port que vous voulez que le serveur embarqué écoute pour la connexion (laissez-le être 8000). Si vous pointez votre navigateur vers http://ip.ip.ip.ip:port/your-script.php vous obtiendrez ce que vous voulez sans avoir besoin d'exécuter apache du tout.

Si vous voulez toujours faire fonctionner php via apache, vous devez déterminer comment vous l'avez installé.

Etapes pour vérifier si php doit être exécuté comme module apache :
Exécuter apache2ctl -M et regardez si le module php est chargé. S'il n'est pas présent, vous devez l'activer. sudo a2enmod phpX (où X est la version de php) et recharger apache avec commandement :
sudo service apache2 reload .

Etapes pour vérifier si php doit être exécuté en tant que service php-fpm :
Si vous installez php en tant que php-fpm vous devez alors vérifier s'il est en cours d'exécution :
ps aux | grep 'php-fpm'
S'il fonctionne, vous devez configurer votre instance d'Apache pour qu'elle fonctionne comme un proxy. Utilisez l'outil officiel documentation sur apache pour le mettre en place. La configuration est plus compliquée à comparer avec le cas où php fonctionne comme module apache, mais elle présente de nombreux avantages dont on a généralement besoin dans un environnement de production.

Étapes pour vérifier si php doit être exécuté en tant que php-cgi (dans ce mode, le php est appelé par Apache à chaque fois que quelqu'un demande le fichier php) :
Vérifiez la présence des paramètres suivants dans le(s) fichier(s) de configuration d'Apache :

ScriptAlias /local-bin /usr/bin
AddHandler application/x-httpd-php5 php
Action application/x-httpd-php5 /local-bin/php-cgi

1voto

user3273814 Points 111

Pour ajouter à la réponse de l'utilisateur Alex, assurez-vous également que le fichier libapache2-mod-php5 est installé. Apache ne fonctionnera pas si le paquetage ci-dessus n'est pas installé. Pour l'installer, exécutez

sudo apt install libapache2-mod-php5

En installant ce paquet, il ajoutera aussi automatiquement php aux modules à charger par Apache.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X