Installation PHP

Un language de programation orienté serveur permet de générer des pages web dynamiquement en réponse aux actions du client. PHP est actuellement le langage le plus utilisé en production. A contrario d'une page statique dont le contenu est identique à chaque consultation, une page dynamique verra son contenu varier en fonction de différents paramètres (heure, nom de l'utilisateur, champs remplis, etc).

On peut commencer par installer le langage PHP
apt install php
pour l'utiliser comme un langage de programmation traditionnel
apt install php-cli
php -r 'echo "Hello World!";'
ou pour exécuter des scripts
echo '' > example.php
php -f example.php

Installation de PHP

Le serveur HTTP Apache interprète nativement le langage PHP en ajoutant le module libapache2-mod-php
apt install libapache2-mod-php

Pour les autres serveurs HTTP comme Nginx ou pour les sites à fort trafic, on utilise une interface appelée FPM (FastCGI Process Manager) permettant la communication entre un serveur Web et PHP, basée sur le protocole FastCGI
apt install php-fpm
Il faut alors configurer le serveur Web pour lui spécifier le socket Unix ou TCP ou l'adresse IP avec lesquels communiquer pour utiliser PHP. Dans le cas d'un serveur Nginx, on rajoutera par exemple dans la directive server du fichier de Virtual Host les lignes suivantes

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}


Infos FastCGI (PHP)
X-Powered-By fpm/php.ini -> expose_php = Off

Afin de vérifier que PHP fonctionne correctement avec notre serveur HTTP, on peut créer le fichier info.php à la racine Web de notre serveur (/var/www/html) avec le contenu
<?php
phpinfo();

En consultant l'url <IP_adress>/info.php, on obtient alors la page suivante
image Capture_du_20200721_092040.png (48.1kB)

Modules de PHP


Il est souvent nécessaire d'ajouter des fonctionnalités au langage PHP en ajoutant des modules. La liste des modules installés est disponible via la commande
php -m

Les documentations officielles des différents services Web indique en général la liste des modules requis ou recommandé pour leur fonctionnement. Si celles-ci sont incomplètes, il peut-être parfois nécessaire de parcourir les logs d'erreur du serveur Web pour détecter les modules en défaut.
Parmi les modules courants, nous pouvons citer la liste suivante, issu de la documentation francophone d'Ubuntu :
- php-apcu : fournit des fonctionnalités supplémentaires au système de cache implémenté nativement dans PHP (OPcache)
- php-curl : support de cURL, qui permet de se connecter et de communiquer avec d'autres serveurs en HTTP, HTTPS, FTP, gopher, telnet, DICT, file ou LDAP,
- php-gd : outil de traitement d'images,
- php-imagick : outil de traitement d'images,
- php-imap : implémentations des protocoles IMAP, NNTP, et POP3 pour les courriels,
- php-intl : fonctions d'internationalisation,
- php-json : implémente le format d'échange de données JavaScript Object Notation,
- php-ldap : permet la connexion et l'envoi de requêtes sur un annuaire LDAP,
- php-mbstring : implémente des jeux de caractères très grands pour certaines langues,
- php-mysql : support de MySQL et MariaDB
- php-xml : analyseur syntaxique XML (permet à PHP de "comprendre" du XML ou du HTML),
- php-zip :offre la possibilité de lire et d'écrire des archives compressées ZIP, et d'accéder aux fichiers et dossiers s'y trouvant.

Les modules s'activent par défaut lors de leur installation. Il est possible de forcer leur activation ou désactivation à l'aide des commandes phpenmod et phpdismod