Objectifs
Dans ce module nous verrons comment travailler avec des fichiers php dans le cadre de l'utilisation d'un serveur web.
Introduction
Dans ce module nous verrons comment installer et utiliser php-fpm qui est une interface permettant à un serveur web de renvoyer le résultat d'un code php.
Problématique du php
Introduction
Pour cet partie il vous faut vous munir d'un serveur web déjà fonctionnel. Un seul site suffira.
Présentation du PHP
Naissance du PHP
Le langage PHP fut créé en 1994 par Rasmus Lerdorf pour son site web. C'était à l'origine une bibliothèque logicielle en C7 dont il se servait pour conserver une trace des visiteurs qui venaient consulter son CV. Au fur et à mesure qu'il ajoutait de nouvelles fonctionnalités, Rasmus a transformé la bibliothèque en une implémentation capable de communiquer avec des bases de données et de créer des applications dynamiques et simples pour le Web (Source Wikipédia).
Pourquoi faire du PHP
Ce langage de programmation libre descendant du C est exécuté du côté serveur pour pouvoir finalement générer autant du code (HTML ou CSS par exemple) ou des données (PNG, GIF,...) qui seront envoyées au navigateur du client capable des les interpréter. Une autre force du PHP est qu'il est très utile pour envoyer des données à une base de données. Il est multi-plateforme : autant sur Linux qu'avec Windows il permet aisément de reconduire le même code sur un environnement à peu près semblable (prendre en compte les règles d'arborescences de répertoires qui peuvent changer). Sa puissance en fait un élément central de sites très connus tels que Facebook ou Wikipédia. Avec le temps, le PHP est devenu la référence pour créer des sites dynamiques ou des applications web.
Présentation de la syntaxe PHP
Lorsque PHP traite un fichier, il cherche les balises d'ouverture et de fermeture (<?php et ?>) qui délimitent le code qu'il doit interpréter. Notons que comme en C (le PHP étant un descendant du C), le "//" permet de faire que la ligne qui le suit soit seulement un commentaire.
<?php
echo "Bonjour le monde !";
// ... encore du code
echo "Dernière instruction";
// le script se termine ici, sans la balise de fermeture PHP
?>
De cette manière, cela permet à PHP d'être intégré dans toutes sortes de documents, car tout ce qui se trouve en dehors des balises ouvrantes / fermantes de PHP est ignoré. Par exemple ci-dessous on intègre du HTML qui ne sera pas interprété par le serveur et qui sera directement transmis au client
<h1>Mon Site Web</h1>
<?php
//Du code
?>
Complément :
Test du PHP
Création d'un fichier php
Dans la racine de votre site, créer un fichier simple contenant du php.
sudo nano /home/www/monsite.fr/home.php
<?php
echo "<h1>Hello World !<h1>";
?>
Test du fichier
Rendez vous sur votre site et ajouter à l'url le nom du fichier que vous venez de créer. Dans mon cas cela donne monsite1.fr/home.php
On voit que le site nous propose de télécharger le fichier au lieu de nous afficher le "Hello World !". Nous allons voir dans ce module comment faire pour afficher les fichiers PHP sur notre site.
Installation du module php
Installation
Nous allons devoir installer un paquet permettant à Nginx de traiter les fichiers PHP. Pour cela il suffit d'entrer la commande :
sudo apt-get install php-fpm
Configuration
Le fichier de configuration de php-fpm se trouve à l'adresse /etc/php/8.1/fpm/php.ini
. Le fichier est très complet et bien expliqué (en anglais), la configuration de base est très bien pour l'utilisation que nous allons en faire, il est cependant recommandé d'aller remplacer display_errors = off
par display_errors = on
, ce qui peut être très utile en cas d'erreurs lorsque l'on est en phase de développement. Cette variable est à laisser off
dans un environnement de production, car on veut en général cacher au maximum les éventuelles erreurs PHP pour des raison d'ergonomie, de présentation mais également de sécurité.
Pour notre cas, nous allons activer l'affichage des erreurs pour nous aider à débugger notre application le temps du développement
sed -i "s|^display_errors = Off|display_errors = On|g" /etc/php/8.1/fpm/php.ini
sed -i "s|^display_startup_errors = Off|display_startup_errors = On|g" /etc/php/8.1/fpm/php.ini
systemctl restart php8.1-fpm.service
Nous allons aussi devoir effectuer des modifications dans nos configuration nginx pour lui dire quoi faire avec nos fichier php.
Voici une configuration minimale pour nginx utilisant du php :
server{
listen 80;
server_name monsite.fr;
root /home/www/monsite;
index index.php index.html;
location / {
try_files $uri $uri/ =404; #on indique au serveur qu'on essaye d'abord de charger le fichier demandé dans l'url (avec $uri) ou sinon le dossier ($uri/) ou de renvoyer une erreur 404 si il ne trouve pas le fichier
}
location ~ \.php$ { #on explique à nginx ce qu'il doit faire si on lui demande un fichier terminant par .php
include snippets/fastcgi-php.conf; #on inclut une configuration nginx situé dans /etc/nginx/snippets/
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; #on indique à nginx quel processus s'occupe du php, on peut trouver la liste des processus dans /var/run
}
error_log /home/logs/monsite.error.log;
access_log /home/logs/monsite.log;
}
On peut ensuite à la racine de notre site créer un fichier phpinfo.php
contenant le code ci-dessous :
<?php phpinfo(); ?>
Enfin on peut se rendre sur notre site et ajouter /phpinfo.php
à l'url et observer que notre site reconnaît désormais les fichiers php.
La page affichée est une page récapitulative de la configuration de php sur notre serveur.
Quel est l'intérêt d'utiliser php sur un serveur web ?
Avoir des sites dynamiques
Supporter de nombreuses bases de données
PHP est compatible avec de nombreux systèmes d'exploitation
Collecter des données de formulaire
Quel est l'intérêt d'utiliser php sur un serveur web ?
Avoir des sites dynamiques
Supporter de nombreuses bases de données
PHP est compatible avec de nombreux systèmes d'exploitation
Collecter des données de formulaire
PHP peut réaliser toutes ces choses et bien plus encore. De façon générale on l'utilise afin d'avoir un site dynamique et pouvoir gérer des bases de données.
Pour plus d'informations vous pouvez consulter la documentation officielle.
Site en PHP
Quel est l'interêt d'un fichier html par rapport à du simple texte ?
Le language HTML permet de structurer notre texte, avoir des titres et des paragraphes. C'est un langage qui est interprété par le navigateur.
Testez la configuration de php-fpm en créant un fichier index.php contenant le code suivant :
<?php
$prenom = Anthony;
echo "<h1>Bonjour".$prenom." !</h1>";
?>
Quelle est la différence entre le code donné précédemment et celui ci :
<?php
echo "<h1>Bonjour Anthony !</h1>";
?>
Dans le premier code nous avons une notion de variable, c'est à dire que nous affectons un prénom à la variable $prenom et on peut ensuite l'utiliser à plusieurs endroits différents. Cela nous permet de changer le nom à un seul endroit lorsque nous souhaitons effectuer des modifications.
Comment récupérer une variable dans une URL ?
Manuel php : http://php.net/manual/fr/reserved.variables.get.php
$_GET
Tout d'abord pour faire passer des variables par l'url il faut l'écrire sous la forme :
monsite.fr/bonjour.php?variable1=valeur1&variable2=valeur2
Ensuite côté code php il faut utiliser $_GET comme ci-dessous :
<?php
$a = $_GET['variable1'];
$b = $_GET['variable2'];
echo $a;
echo $b;
?>
Donner l'URL ainsi que le code php d'une page qui affiche le nom et le prénom du client.
monsite.fr/bonjour.php?nom=Bocquet&prenom=Anthony
<?php
$nom = $_GET['nom'];
$prenom = $_GET['prenom'];
echo "<h1> Bonjour ".$prenom." ".$nom." !</h1>";
?>