Installer PHP avec Lighttpd

Dans un article précédent intitulé « Créer un serveur PHP 7.0 » PHP avait été installé avec Apache2. Mais le mode opératoire utilisé n'est pas utilisable de façon identique avec Lioghttpd. En effet l'installation de PHP par défaut sur Raspbian installe automatiquement en pré-requis tous les packages Apache2. Ce qui n'est pas utile puisqu'un autre serveur Web — Lighttd — est déjà installé. Il va falloir procéder en définissant l'ordre de dépendance des packages utilisés avec PHP et Lighttpd.

Installation de PHP 7.0 sur Lighttpd

Pré-requis

Installation des packages PHP en mode CGI

Pour faire fonctionner le PHP avec Lighttpd, on va s'appuyer sur le module CGI de Lighttpd. Les packages de PHP à installer sont donc dans cet ordre : php-common, php-cgi puis php.
pi@raspi01:~ $ sudo apt update
. . .
pi@raspi01:~ $ sudo apt upgrade
. . .
pi@raspi01:~ $ sudo apt install php-common php-cgi php
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés :
  php7.3 php7.3-cgi php7.3-cli php7.3-common php7.3-json php7.3-opcache
  php7.3-readline
Paquets suggérés :
  php-pear
Les NOUVEAUX paquets suivants seront installés :
  php php-cgi php-common php7.3 php7.3-cgi php7.3-cli php7.3-common
  php7.3-json php7.3-opcache php7.3-readline
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 2 984 ko dans les archives.
Après cette opération, 17,1 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] O
. . .
Creating config file /etc/php/7.3/cli/php.ini with new version
Paramétrage de php7.3-cgi (7.3.14-1~deb10u1) ...
update-alternatives: utilisation de « /usr/bin/php-cgi7.3 » pour fournir « /usr/bin/php-cgi » (php-cgi) en mode automatique
update-alternatives: utilisation de « /usr/lib/cgi-bin/php7.3 » pour fournir « /usr/lib/cgi-bin/php » (php-cgi-bin) en mode automatique

Creating config file /etc/php/7.3/cgi/php.ini with new version
Paramétrage de php7.3 (7.3.14-1~deb10u1) ...
Paramétrage de php-cgi (2:7.3+69) ...
Paramétrage de php (2:7.3+69) ...
Traitement des actions différées (« triggers ») pour man-db (2.8.5-2) ...
pi@raspi01:~ $

Modification de la configuration de Lighttpd

Pour pouvoir fonctionner en mode CGI avec Lighttpd, PGP nécessite l'activation de module fastcgi-php de Lighttpd. Pour cela on utilise la commande lighty-enable-mod.
pi@raspi01:~ $ sudo lighty-enable-mod fastcgi-php
Met dependency: fastcgi
Enabling fastcgi-php: ok
Enabling fastcgi: ok
Run "service lighttpd force-reload" to enable changes
pi@raspi01:~ $ ls -l /etc/lighttpd/conf-enabled
total 0
lrwxrwxrwx 1 root root 29 mai   11 14:00 10-cgi.conf -> ../conf-available/10-cgi.conf
lrwxrwxrwx 1 root root 33 mai   12 17:27 10-fastcgi.conf -> ../conf-available/10-fastcgi.conf
lrwxrwxrwx 1 root root 37 mai   12 17:27 15-fastcgi-php.conf -> ../conf-available/15-fastcgi-php.conf
lrwxrwxrwx 1 root root 42 févr. 13 17:02 90-javascript-alias.conf -> ../conf-available/90-javascript-alias.conf
pi@raspi01:~ $ sudo service lighttpd force-reload
pi@raspi01:~ $
La commande lighty-enable-mod crée un alias dans /etc/lighttpd/conf-enabled des deux fichiers 10-fastcgi.conf et 15-fastcgi-php.conf contenus dans /etc/lighttpd/conf-available. Après le rechargement de Lighttpd, en invoquant la commande service lighttpd force-reload, comme suggéré, ces fichiers de configuration sont pris en compte. Les numéros en préfixe des fichiers indique l'ordre de prise en compte des configurations des modules additionnels de Lighttpd. Les fichiers préfixés 10 passe avant le fichier préfixé 15.

Tester l'installation

Le plus simple, pour tester le fonctionnement de PHP est de créer un fichier phpinfo.php dans /var/www/html. Le fichier doit avoir le contenu suivant :
<?php
phpinfo();
?>
La fonction phpinfo() de PHP affiche tous les paramètres de configuration de PHP sur le navigateur.
Pour être interprété par PHP, le code doit être encadré par <?php et ?>. Le code PHP peut être fractionné et tous ce qui se trouve en dehors de ces délimiteurs est envoyé tel quel vers le navigateur. Cela permet de mélanger du code HTML qui est interprété par le navigateur client et du code PHP qui est interprété par le serveur.
Si l'installation est correcte la page ci-dessous doit s'afficher avec l'url http://192.168.1.102/phpinfo.php :

Conclusion

Le serveur Web Lighttpd peut maintenant exécuter des scripts PHP.
Il faut remarquer, que si le module cgi de Lighttpd a été configuré pour exécuter des scripts en langage Python, comme indiqué dans l'article intitulé « Programmer des pages Web dynamiques en Python pour Lighttpd », il est maintenant possible de faire cohabiter, dans une même application, des scripts CGI programmés dans ces deux langages.

Commentaires

Posts les plus consultés de ce blog

Gérer la mise en veille

Configurer VSCode pour programmer et déboguer à distance sur Raspberry Pi

Créer un nouvel utilisateur Raspbian