2.Installation de PHP

2.3.sous Linux

2.3.3.A partir des sources

2.3.3.1.Introduction

Avant de procéder à l'installation de PHP, vous devez déterminer si vous souhaitez utiliser PHP dans le cadre d'un site web avec possibilité de l'utiliser en ligne de commande (c'est l'option la plus courante) ou bien uniquement en ligne de commande.
Dans ce chapitre, nous allons décrire la procédure pour installer PHP pour le web mais nous vous indiquerons les étapes à ignorer si seul PHP en ligne de commande vous intéresse.
Nous allons donc:
  • Voir où (et comment) récupérer les sources d'Apache et PHP
  • Détailler la procédure de compilation et installation "générique" sous Linux
  • Appliquer cette procédure à Apache/httpd puis PHP.

2.3.3.2.Téléchargement des sources du serveur web et de PHP

Les sources du serveur web Apache/httpd sont disponibles à l'adresse [https://httpd.apache.org/download.cgi#apache24] (évidemment inutiles pour une utilisation de PHP en ligne de commande). Vous avez le choix entre plusieurs versions du serveur. Si vous n'avez pas de contrainte particulière prenez la dernière version (the latest available version) qui apparaît en haut de l'écran. Puisque nous souhaitons disposer des sources, c'est sur les liens en face de "Source:" qu'il convient de cliquer. Vous pouvez aussi bien prendre la version .tar.bz2 que .tar.gz.
Les sources de PHP sont disponibles à l'adresse [http://www.php.net/downloads.php]. Là, encore, si vous n'avez pas de contrainte particulière prenez la dernière version affichée en haut de la page. Elle est également disponible en .tar.bz2 et .tar.gz.
Nous vous invitons à télécharger ces fichiers dans un espace temporaire. En ce qui nous concerne nous avons pris les versions .bz2 que nous avons téléchargées sous /tmp/telechargement/.
Cette opération de téléchargement peut également se faire directement en ligne (à condition de connaître les versions disponibles). Ici, pour la version 2.4.25 de Apache/httpd et 7.1.5 de PHP nous pouvons taper les commandes suivantes:
$ mkdir /tmp/telechargement
$ cd /tmp/telechargement
$ wget http://apache.mindstudios.com/httpd/httpd-2.4.25.tar.bz2
$ wget http://php.net/get/php-7.1.5.tar.bz2/from/a/mirror
rem
  • Pour cela, vous devez évidemment disposer de wget. Ce dernier peut être installé sous Debian et Ubuntu via # apt-get update; apt-get install wget et sous Fedora via # dnf install wget (pensez à faire précéder chacune des instructions de sudo si vous n'avez pas la possibilité de vous connecter en tant que root).

2.3.3.3.Compilation sous Linux

2.3.3.3.1.Introduction

Que ce soit pour compiler/installer le serveur web Apache/httpd ou pour compiler/installer PHP le principe est le même (et est identique à bon nombre des procédures de compilation/installation sous Linux).
Il s'agit de:
  1. Décompacter les sources
  2. Lancer le script qui va vérifier et configurer l'environment de compilation
  3. Passer à la compilation proprement dite
  4. Procéder à l'installation.
En soit, il ne s'agit pas d'une opération vraiment délicate... à condition d'être en mesure de répondre aux attentes en terme d'environnement de compilation (i.e. il faut être en mesure d'apporter une solution lorsque le script lève une erreur parce qu'il n'a pas trouvé un élément requis).
Bon nombre des instructions indiquées dans ce chapitre nécessitent d'avoir les privilèges du superutilisateur root. Nous supposerons que vous êtes en mesure de passer en mode root (ce que nous materialisons par le prompt #) si ce n'est pas le cas, vous devrez faire précéder les commandes listées dans ce chapitre de l'instruction sudo (ex $ sudo ifconfig au lieu de # ifconfig, $ et # ne sont pas à saisir, ils font partie du prompt).

2.3.3.3.2.Décompression des sources

Nous vous invitons à décompresser les sources sous /usr/local/src/. Ceci ne devrait pas poser de difficulté si vous êtes familier avec Linux.
En ligne de commande, un fichier portant
  • l'extension .tar.bz2 s'extrait via $ tar -jxvf <nom du fichier>.tar.bz2
  • l'extension .tar.gz s'extrait via $ tar -zxvf <nom du fichier>.tar.gz
rem
  • Vous pouvez cependant rencontrer les erreurs suivantes:
    • "tar: commande introuvable" (ou "tar: command not found") dans ce cas il faut installer le paquetage tar
    • "tar (child): bzip2: Cannot exec: No such file or directory" dans ce cas il faut installer le paquetage bzip2
Pour rappel un paquetage s'installe (faire précéder les instructions de sudo si vous n'êtes pas sous un compte root):
  • sous Debian et Ubuntu via la commande # apt-get install <nom du paquetage> (à faire précéder de # apt-get update si cela n'a pas été fait récemment)
  • sous Fedora via la commande # dnf <nom du paquetage>
A l'issue de la décompression, vous devez trouver un nouveau répertoire sous /usr/local/src/ portant le nom du logiciel et la version (ex: apache-2.4.25/ et php-7.1.5/).

2.3.3.3.3.Configuration de l'environnement

Vous pourrez alors aller dans le répertoire nouvellement créé (/usr/local/src/<nom du logiciel>-<version>/ si vous suivez la procédure) et taper la commande # ./configure --prefix=/usr/local/<nom du logiciel>-<version> <autres paramètres>. Ceci va vérifier et préparer l'environnement de compilation du logiciel pour une installation dans le répertoire /usr/local/<nom du logiciel>-<version> (c'est l'endroit que nous vous préconisons afin de bien identifier les versions générées mais aussi de bien distinguer les logiciels apportés par la distribution - que l'on trouve directement sous /usr/ - des logiciels que vous avez pu installer "à la main" - cette fois sous /usr/local/).
Si le script de configuration détecte des outils ou sources de bibliothèques manquant dans votre environment de compilation, il stoppera avec un message d'erreur qu'il faudra interpréter afin d'être en mesure de les installer et de relancer le script. Là est toute la difficulté.

2.3.3.3.4.Compilation

Si le script de configuration s'est déroulé dans incident vous pourrez (toujours dans le même dossier) saisir la commande # make.
rem
  • Si par hasard, votre système répond "make: commande introuvable" (ou "make: command not found") c'est qu'il faut installer le package make

2.3.3.3.5.Installation

Une fois la compilation terminée il est possible d'installer le logiciel (dans l'espace défini par l'option --prefix de la commande configure) via # make install.
Cette étape ne devrait poser aucun problème.
Les commandes du logiciel se trouvent alors dans le dossier bin/ de l'endroit où a été installé le logiciel (ex:/usr/local/httpd-2.4.25/bin/). Il peut être pratique (notamment si c'est la seule version du logiciel susceptible de tourner sur le serveur) d'ajouter ce dossier dans le PATH. Une autre alternative peut consister à créer des liens symboliques vers /usr/local/bin (qui est habituellement dans le PATH) des commandes effectivement utilisées (en précisant éventuellement la version). Ex: # ln -s /usr/local/<logiciel>-<version>/bin/<commande> /usr/local/bin/<commande>-<version>

2.3.3.4.Compilation et installation d'Apache/httpd

2.3.3.4.1.Introduction

Si vous souhaitez n'utiliser PHP qu'en ligne de commande passez directement à l'étape suivant "Compilation et installation de PHP".

2.3.3.4.2.Décompression des sources

Nous vous invitons à décompresser les sources sous /usr/local/src/. Ceci ne devrait pas poser de difficulté si vous êtes familier avec Linux.
En ligne de commande, un fichier portant l'extension .tar.bz2 s'extrait via $ tar -jxvf <nom du fichier>.tar.bz2.
warning Ceci à condition de disposer de la commande bzip2 qui peut s'installer sous Debian et Ubuntu via # apt-get update; apt-get install bzip2
En ligne de commande, un fichier portant l'extension .tar.gz s'extrait via $ tar -zxvf <nom du fichier>.tar.gz.
Dans notre cas, nous saisirons donc les commandes
# cd /usr/local/src
# tar -jxvf /tmp/telechargement/httpd-2.4.25.tar.bz2
rem
  • Afin d'être autorisé à décompresser l'archive sous /usr/local/src nous nous sommes connecté en tant que root (ce que nous avons matérialisé ici par le prompt #). Si vous n'avez pas la possibilité de vous connecter root alors sans doute que vous devrez faire précéder l'instruction tar par sudo.
A l'issue de la décompression, un nouveau dossier http-2.4.25/ (au numéro de version près) a été crée sous /usr/local/src qui contient l'ensemble des sources de serveur internet apache.

2.3.3.4.3.Configuration de l'environnement

Vous pouvez maintenant aller dans le répertoire nouvellement créé (/usr/local/src/http-2.4.25/ si vous avez suivi la procédure) et taper la commande # ./configure --prefix=/usr/local/http-2.4.25. Ceci va vérifier et préparer l'environnement de compilation de Apache/http pour une installation dans le répertoire /usr/local/http-2.4.25 (c'est l'endroit que nous vous préconisons afin de bien identifier les versions générées mais aussi de bien distinguer les logiciels apportés par la distribution - directement sous /usr/ - des logiciels que vous avez pu installer "à la main" - sous /usr/local/).
Si le script de configuration détecte des outils ou sources de bibliothèques manquant dans votre environment de compilation, il stoppera avec un message d'erreur qu'il faudra interpréter afin d'être en mesure de les installer et de relancer le script. Là est toute la difficulté.
Voici une liste (non exhaustive probablement) des messages d'erreur que vous pouvez rencontrer et des solutions à apporter:
  • "configure: error: APR not found. Please read the documentation." Dans ce cas, il convient d'installer le paquetage libapr1-dev
  • "configure: error: APR-util not found. Please read the documentation." Dans ce cas, il convient d'installer le paquetage libaprutil1-dev
  • "configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/". Dans ce cas, il convient d'installer le paquetage libpcre3-dev
Pour rappel un paquetage s'installe sous Debian et Ubuntu via les commandes # apt-get update; apt-get install <nom du paquetage>

2.3.3.4.4.Compilation

Si le script de configuration s'est déroulé dans incident vous pouvez (toujours dans le même dossier) saisir la commande # make.
rem
  • Si par hasard, votre système répond "make: commande introuvable" (ou "make: command not found") c'est qu'il faut l'installer. Ce qui peut être fait sous Debian et Ubuntu via # apt-get update; apt-get install make.

2.3.3.4.5.Installation

Une fois la compilation terminée il est possible d'installer le serveur (dans l'espace défini par l'option --prefix de la commande configure) via # make install.
Cette étape ne devrait poser aucun problème.
Les commandes du serveur Apache se trouvent alors dans le dossier bin/ de l'endroit où a été installé le serveur (ex:/usr/local/httpd-2.4.25/bin/). Il peut être pratique (notamment si c'est le seul serveur web à être susceptible de tourner sur le serveur) d'ajouter ce dossier dans le PATH. Une autre alternative peut consister à créer des liens symboliques vers /usr/local/bin (qui est habituellement dans le PATH) des commandes effectivement utilisées (en précisant éventuellement la version). Ex: # ln -s /usr/local/httpd-2.4.25/bin/apachectl /usr/local/bin/apachectl-2.4.25

2.3.3.5.Compilation et installation de PHP

2.3.3.5.1.Décompression des sources

Nous vous invitons à décompresser les sources précédemment téléchargées sous /usr/local/src. Ceci ne devrait pas poser de difficulté si vous êtes familier avec Linux.
En ligne de commande, un fichier portant l'extension .tar.bz2 s'extrait via $ tar -jxvf <nom du fichier>.tar.bz2.
warning Ceci à condition de disposer de la commande bzip2 qui peut s'installer sous Debian et Ubuntu via # apt-get update; apt-get install bzip2
En ligne de commande, un fichier portant l'extension .tar.gz s'extrait via $ tar -zxvf <nom du fichier>.tar.gz.
Dans notre cas, nous saisirons donc les commandes
# cd /usr/local/src
  # tar -jxvf /tmp/telechargement/php-7.1.5.tar.bz2
  
rem
  • Afin d'être autorisé à décompresser l'archive sous /usr/local/src nous nous sommes connecté en tant que root (ce que nous avons matérialisé ici par le prompt #). Si vous n'avez pas la possibilité de vous connecter root alors sans doute que vous devrez faire précéder l'instruction tar par sudo.
A l'issue de la décompression, un nouveau dossier php-7.1.5/ (au numéro de version près) a été crée sous /usr/local/src qui contient l'ensemble des sources de l'interpréteur PHP.

2.3.3.5.2.Configuration de l'environnement

Vous pouvez maintenant aller dans le répertoire nouvellement créé (/usr/local/src/php-7.1.5/ si vous avez suivi la procédure) et taper la commande # ./configure --prefix=/usr/local/php-7.1.5 --with-apxs2=/usr/local/httpd-2.4.25/bin/apxs. Ceci va vérifier et préparer l'environnement de compilation de l'interpréteur PHP pour une installation dans le répertoire /usr/local/php-7.1.5 (c'est l'endroit que nous vous préconisons afin de bien identifier les versions générées mais aussi de bien distinguer les logiciels apportés par la distribution - directement sous /usr/ - des logiciels que vous avez pu installer "à la main" - sous /usr/local/).
Si vous ne souhaitez pas utiliser PHP comme module web, ne saisissez simplement pas l'option --with-apxs2.
Si le script de configuration détecte des outils ou sources de bibliothèques manquant dans votre environment de compilation, il stoppera avec un message d'erreur qu'il faudra interpréter afin d'être en mesure de les installer et de relancer le script. Là est toute la difficulté.
Voici une liste (non exhaustive probablement) des messages d'erreur que vous pouvez rencontrer et des solutions à apporter:
  • "configure: error: xml2-config not found. Please check your libxml2 installation." Dans ce cas, il convient d'installer le paquetage libxml2-dev
Pour rappel un paquetage s'installe sous Debian et Ubuntu via les commandes # apt-get update; apt-get install <nom du paquetage>

2.3.3.5.3.Compilation

Si le script de configuration s'est déroulé dans incident vous pouvez (toujours dans le même dossier) saisir la commande # make.
rem
  • Si par hasard, votre système répond "make: commande introuvable" (ou "make: command not found") c'est qu'il faut l'installer. Ce qui peut être fait sous Debian et Ubuntu via # apt-get update; apt-get install make.

2.3.3.5.4.Installation

Une fois la compilation terminée il est possible d'installer le serveur (dans l'espace défini par l'option --prefix de la commande configure) via # make install.
Cette étape ne devrait poser aucun problème.
Les commandes du serveur Apache se trouvent alors dans le dossier bin/ de l'endroit où a été installé le serveur (ex:/usr/local/php-7.1.5/bin/). Il peut être pratique (notamment si c'est le seul serveur web à être susceptible de tourner sur le serveur) d'ajouter ce dossier dans le PATH. Une autre alternative peut consister à créer des liens symboliques vers /usr/local/bin (qui est habituellement dans le PATH) des commandes effectivement utilisées (en précisant éventuellement la version). Ex: # ln -s /usr/local/php-7.2.5/bin/php /usr/local/bin/php-7.2.5

2.3.3.5.5.Test de l'installation

Vous pouvez maintenant faire un test rapide
# /usr/local/php-5.1.5/bin/php -i
(à supposer que vous ayez précédemment choisi /usr/local/php-5.2.8 pour valeur de --prefix).

2.3.3.5.6.Configuration

Copier le fichier php.ini