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
pour l'utiliser comme un langage de programmation traditionnel
ou pour exécuter des scripts
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
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
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
En consultant l'url <IP_adress>/info.php, on obtient alors la page suivante
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
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, issue 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
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-phpapt 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
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, issue 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