Installer PHP 8.x + MariaDB avec Debian 10
Installation de PHP 8.0 sur un Debian 10 XFCE avec MariaDB.
J'ai donc installé sur une machine 64 bits une version de PHP 8.0 rc avec MariaDB sur une Debian 10 Buster XFCE (test du 23/10/2020). NOTE au 04/11/20 PHP 8.0 rc3
Le but de ce mode d'emploi est de créer en local, un serveur de tests dans le home/dossier_personnel/ par un VirtualHost afin de pouvoir effectuer simplement les manipulations et sauvegardes des CMS.
Nota :
que ce soit 32 ou 64 bits la solution est la même à quelques détails prêt en fonction de la date où vous installez !
Dans cette page (installation en local) linux est le nom du dossier personnel : celui qui se créer avec le nom d’utilisateur à l'installation, dans le home, donc ici /home/linux/ dans cette page. Il faut donc adapter le nom suivant votre dossier personnel.
Debian 10 est fournie avec PHP 7.3.23 au moment de ce test (22/10/2020).
Afin d'avoir une version PHP pour tester la future version PHP 8 plus à jour j'ai utilisé le dépôt de Ondřej Surý qui donnait PHP 8.0.0~rc1 (NOTE au 04/11/20 PHP 8.0 rc3)
Il faut donc installer Apache, PHP et mariadb-server.
Les manipulations sont faites en ligne de commande en terminal administrateur
sudo -s
(plus simple à reproduire ici)Uniquement pour tests et information "à vos risques et périls" ;-)
Nota suivant la distribution Linux le logiciel éditeur de texte mousepad peut être remplacer gedit, geany par ou autre possibilité à votre convenance pour l’édition des fichiers textes
A - Préparation et installation
A1. mise à jour des paquets
apt-get update
Par sécurité
apt-get upgrade
A2. Installation d'Apache
apt-get install apache2
Les NOUVEAUX paquets suivants seront installés :
apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1
libaprutil1-dbd-sqlite3 libaprutil1-ldap
0 mis à jour, 8 nouvellement installés, 0 à enlever et 0 non mis à jour.
Ici se sera Apache 2.4.38.3A3. test
- dans la barre d’adresse du navigateur : http://localhost/
pour afficher la page (index.html) : Apache2 Debian Default Page - It works!-
NOTA : le fichier index.html se trouve dans /var/www/html/

A4a. Installation de PHP 7.3 - Préparation
Grâce à la mise à disposition du dépôt de Ondřej Surý
Vérifier que apt-transport-https, lsb-release et ca-certificates sont installés
ou
apt-get install apt-transport-https lsb-release ca-certificates
lsb-release est déjà la version la plus récente (10.2019051400).
ca-certificates est déjà la version la plus récente (20200601~deb10u1).
dans mon cas lsb-release et ca-certificates étaient déjà installés donc
Les NOUVEAUX paquets suivants seront installés :
apt-transport-https
0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Préparation pour l'ajout du dépôt packages.sury.org
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
Résultats
--2020-10-22 18:22:20-- https://packages.sury.org/php/apt.gpg
Résolution de packages.sury.org (packages.sury.org)… 104.31.94.169, 172.67.182.150, 104.31.95.169, ...
Connexion à packages.sury.org (packages.sury.org)|104.31.94.169|:443… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 1769 (1,7K) [application/octet-stream]
Sauvegarde en : « /etc/apt/trusted.gpg.d/php.gpg »
/etc/apt/trusted.gp 100%[===================>] 1,73K --.-KB/s ds 0s
2020-10-22 18:22:21 (7,08 MB/s) — « /etc/apt/trusted.gpg.d/php.gpg » sauvegardé [1769/1769]
Ajouter au fichier sources.list
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
Attention le code ci-dessus doit être sur une seule ligneCela crée un fichier php.list contenant deb https://packages.sury.org/php/ buster main, dans le dossier /etc/apt/sources.list.d/
- Sinon crée un fichier php.list contenant
deb https://packages.sury.org/php/ stretch main
dans le dossier /etc/apt/sources.list.d/
Mise à jour des paquets du nouveau dépôt
apt-get update
Atteint :1 https://deb.debian.org/debian buster InRelease
Atteint :2 https://deb.debian.org/debian-security buster/updates InRelease
Réception de :3 https://packages.sury.org/php buster InRelease [6 759 B]
Atteint :4 https://deb.debian.org/debian buster-updates InRelease
Réception de :5 https://packages.sury.org/php buster/main amd64 Packages [148 kB]
A4b. Installation de PHP 8.0
Attention le code ci-dessous doit être sur une seule ligne
apt install php8.0 libapache2-mod-php8.0 php8.0-mysql php8.0-curl php8.0-gd php8.0-intl php8.0-sqlite3 php8.0-gmp php8.0-mbstring php8.0-xml php8.0-zip
NOTE php8.0-json est incorporé dans le PHP 8.xCela doit afficher sur le terminal
apt install php8.0 libapache2-mod-php8.0 php8.0-mysql php8.0-curl
php8.0-gd php8.0-intl php8.0-sqlite3 php8.0-gmp php8.0-mbstring
php8.0-xml php8.0-zip
Supprimer éventuellement les modules qui ne vous intéressent pasLes paquets supplémentaires suivants seront installés :
libicu65 libonig5 libzip4 php-common php8.0-cli php8.0-common php8.0-opcache
php8.0-readline
Paquets suggérés :
php-pear
Les NOUVEAUX paquets suivants seront installés :
libapache2-mod-php8.0 libicu65 libonig5 libzip4 php-common php8.0 php8.0-cli
php8.0-common php8.0-curl php8.0-gd php8.0-gmp php8.0-intl php8.0-mbstring
php8.0-mysql php8.0-opcache php8.0-readline php8.0-sqlite3 php8.0-xml
php8.0-zip
0 mis à jour, 19 nouvellement installés, 0 à enlever et 10 non mis à jour.
la version installée sera 8.0.0~rc1-6+0~20201018.3+debian10~1.gbpc2ed52Par sécurité
apt-get upgrade
Les paquets suivants seront mis à jour :
libargon2-1 libgd3 libidn2-0 libpcre2-16-0 libpcre2-8-0 libpcre3 libsodium23
libssl1.1 libxml2 openssl
10 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Puis une fois l'installation terminée (pour relancer le serveur)
systemctl reload apache2
Créer en root dans /var/www/html/ un fichier phpinfo.php avec
<?php phpinfo(); ?>
Ou bien en ligne de commande entrer la ligne suivanteecho '<?php phpinfo(); ?>' >/var/www/html/phpinfo.php
Tester avec dans la barre d’adresse du navigateur : http://localhost/phpinfo.php
Cela affichera le contenu du phpinfo
avec PHP Version 8.0.0rc1
et DOCUMENT_ROOT /var/www/html

A5. Installation de MariaDB (mariadb-server-10.3)
apt install mariadb-server
Les paquets supplémentaires suivants seront installés :
galera-3 gawk libaio1 libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl
libhtml-template-perl libreadline5 libterm-readkey-perl mariadb-client-10.3
mariadb-client-core-10.3 mariadb-server-10.3 mariadb-server-core-10.3 socat
Paquets suggérés :
gawk-doc libmldbm-perl libnet-daemon-perl libsql-statement-perl
libipc-sharedcache-perl mailx mariadb-test netcat-openbsd tinyca
Les NOUVEAUX paquets suivants seront installés :
galera-3 gawk libaio1 libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl
libhtml-template-perl libreadline5 libterm-readkey-perl mariadb-client-10.3
mariadb-client-core-10.3 mariadb-server mariadb-server-10.3
mariadb-server-core-10.3 socat
0 mis à jour, 15 nouvellement installés, 0 à enlever et 0 non mis à jour.
Puis une fois l'installation terminée (pour relancer le serveur)
systemctl reload apache2
A5a. Création d'un mot de passe pour le compte "root" avec MariaDB pour gérer toutes les bases de données avec ce seul compte - Par défaut le compte root, le mot de passe est vide donc impossible de se connecter avec Adminer
mysql -u root -p mysql
Enter password:
NOTA:tapez sur la touche entrée pour valider
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 49
Server version: 10.3.25-MariaDB-0+deb10u1 Debian 10
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [mysql]>
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'linux';
Query OK, 0 rows affected (0.00 sec)
Nota pour sortir utiliser quit ou \q
MariaDB [mysql]> quit
Bye
Remplacer bien sur "linux" par votre mot de passe root choisi
Il sera alors possible de se connecter avec Adminer avec les identifiant "root" et "linux" et d'avoir accès à la gestion des toutes les bases de données.
A5b. Gestion des bases de données avec Adminer
Télécharger et mettre en place Adminer Recommandé pour la simplicité ;)
Adminer 4.7.7 utiliser ici lors du test du 23/10/2020 - voir une version plus récente
Il est plutôt conseillé d'installer Adminer que PhpMyAdmin.
C'est plus simple plus sur et aussi facile à gérer en local
- plus simple un seul fichier qu l'on place ou on veux (prendre uniquement dans ce cas le fichier unique depuis le site Adminer (le premier de la liste) et non pas le paquet Debian)
- plus sur, moins de bugs et corrections.
- le fichier sera dans le dossier /Téléchargements/ : adminer-4.7.7.php sera renommer en en adminer.php.
- puis copier ou déplacer le fichier adminer.php dans le dossier /var/www/html/ pour tester
en ligne de commande (remplacer linux par votre nom d'utilisateur) et attention au nom du dossier /Téléchargements/
cp /home/linux/Téléchargements/adminer.php /var/www/html/
Se connecter avec dans la barre d’adresse du navigateur : http://localhost/adminer.php pour afficher la base de donnéesICI page blanche car Adminer n'est PAS compatible avec PHP 8.x
NOTA : le 06/12/20 la version 4.7.8 est compatible PHP 8.x
Il vous reste à créer vos base de données en utilisant Adminer (pour plus tard ;) ).
il faut passer en mode console avec mysql
On va créer une nouvelle Base de Données avec le compte root mot de passe linux créé plus haut
mysql -u root -p
Enter password:
NOTA: Tapez "votre_mot_de_passe_root_choisi" puis touche entrée pour valider
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 50
Server version: 10.3.25-MariaDB-0+deb10u1 Debian 10
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
MariaDB [(none)]> create database test;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> \q
Bye
B - Manipulations et ajouts
B1. Modifications du php.ini pour affichage des erreurs, date et PHAR
Nota suivant la distribution Linux le logiciel éditeur de texte mousepad peut être remplacer gedit, geany par ou autre possibilité a votre convenance, le but c'est d’éditer le fichier
/etc/php/8.0/apache2/php.ini
mousepad /etc/php/8.0/apache2/php.ini
Par exemple avec le bureau KDE :
su kwrite /etc/php/8.0/apache2/php.iniCommenter cette ligne en ajoutant le point virgule ; devant
;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
Ajouter (pour afficher les toutes les erreurs d'exécution des scripts et les erreurs E_STRICT)
error_reporting = E_ALL
Pour infomation sur error_reporting; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
Commenter cette ligne en ajoutant le point virgule ; devant
;display_errors = Off
Ajouter (Pour afficher les erreurs à l'écran)
display_errors = On
Rechercher
;date.timezone =
Ajouter (Pour afficher le fuseau horaire de Paris)
date.timezone = Europe/Paris
Rechercher
[Phar]
; http://php.net/phar.readonly
;phar.readonly = On
Ajouter (Permet la création des archives Phar)
phar.readonly = Off
Puis pour relancer le serveur
service apache2 restart ou systemctl reload apache2
Dans le phpinfo.php error_reporting est passé de 22527 à 32767 et Default timezone = Europe/Paris
C - Création d'un dossier de test dans home
En remplacement du traditionnel /var/www/html/, afin de pouvoir effectuer simplement les manipulations et sauvegardes des CMS
Si vous souhaitez utiliser le dossier /var/www/html/ pour installer vos CMS il faudra créer vos dossiers en faisant attention aux droits utilisateurs.
Nota : ici linux est le nom de mon dossier personnel (adapter suivant votre dossier personnel)
donc le dossier de test des sites Web sites sera /home/linux/sites (adapter suivant vos besoins)
C1. Créer un dossier (dossier de test des sites Web) nommé ici sites (par exemple)
Ce qui me permettra d'avoir tous les sous dossiers de mes CMS dans /home/linux/sites/
exemple sur l'image

C2. Création d'un VirtualHost
Nota suivant la distribution Linux le logiciel éditeur de texte mousepad peut être remplacer gedit, geany par ou autre possibilité a votre convenance, le but c'est d’éditer les fichiers
textes ...
Il s'agit de copier le fichier original cp 000-default.conf pour avoir un nouveau fichier qui s'appellera sites.local.conf sur lequel les modifications seront faites
cd /etc/apache2/sites-available
cp 000-default.conf sites.local.conf
sudo mousepad /etc/apache2/sites-available/sites.local.conf
Ajuster les noms ici linux (répertoire personnel) et sites (dossier de tests des sites Web) suivant vos besoins
Remplacer tout le texte du fichier
sites.local.conf
par le texte suivant<VirtualHost *:80>
ServerAdmin sites@localhost
DocumentRoot /home/linux/sites
ServerName sites
<Directory /home/linux/sites/>
Require all granted
AllowOverride All
# AllowOverride All = pour mode rewrite et autoriser les fichiers .htacces
## Options Indexes FollowSymLinks
## Options Indexes FollowSymLinks pour afficher Index of ...
</Directory>
</VirtualHost>
Compléter éventuellement suivant vos besoins et sauvegarder ce fichier.Nota : utliser "Options Indexes FollowSymLinks" pour afficher le listing d'un dossier (exemple http://sites/..../ => Index of /....
C3. Activer le VirtualHost
[Ajuster le nom sites (dossier de tests des sites Web) suivant vos besoins]
a2ensite sites.local.conf
Enabling site sites.local.
To activate the new configuration, you need to run:
systemctl reload apache2
relancer Apache systemctl reload apache2
C4. Éditer le fichier hosts pour l’ajuster
mousepad /etc/hosts
[Ajuster le nom sites (dossier de tests des sites Web) suivant vos besoins]
et donc ajouter
127.0.0.1 sites
relancer Apache
systemctl reload apache2
C5 Créer aussi un fichier phpinfo.php dans le dossier /sites avec
Ajuster les noms ici linux (répertoire personnel) et sites (dossier de tests des sites Web) suivant vos besoins
<?php phpinfo(); ?>
soit en ligne de commandeecho '<?php phpinfo(); ?>' >/home/linux/sites
/phpinfo.php
Ou avec un logiciel éditeur de texte (mousepad, gedit, geany par ou autre possibilité a votre convenance)Exemple : ouvrir mousepad copier la ligne
<?php phpinfo(); ?>
Puis sauvegarder le fichier dans /home/linux/sites avec le nom phpinfo.php/home/linux/sites (adapter suivant vos besoins et le nom de votre dossier personnel)
Tester avec http://sites/phpinfo.php
Cela affichera le contenu du phpinfo
avec PHP Version 8.0.0rc1
et DOCUMENT_ROOT /home/linux/sites
C6. Déplacer le fichier Adminer.php depuis dossier /var/www/html/ vers /home/linux/sites
Ajuster les noms ici linux (répertoire personnel) et sites (dossier de tests des sites Web) suivant vos besoins
Tester avec http://sites/adminer.php ici lors du test du 23/10/2020
Si vous avez un Not Found vérifier le nom du fichier ;)
Vous devez avoir des erreurs (comme l’affichage des erreurs PHP est activé) car Adminer n'est PAS compatible PHP 8
Warning: ...adminer.php on line 171
Warning: ...adminer.php on line 171
Warning: ...adminer.php on line 171
Fatal error: ...adminer.php on line 20
C7. Ajouter le mode rewrite (si besoin suivant vos CMS)
a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
systemctl restart apache2
## relancer Apache
systemctl reload apache2
Note dans phpinfo
Loaded Modules : mod_rewrite est dans le dossier /etc/apache2/mods-enabled/rewrite.load
Il ne reste plus qu'à tester votre CMS,
et il va y avoir du boulot ;)
NOTA : le 06/12/20 la version 4.7.8 est compatible PHP 8.x
Compléments
- installer PostgreSQL avec PHP 8.x
- NOTE pour installer ImageMagick sous PHP
- Mot de passe root de MariaDB perdu ou oublié
Crédit pour les affichages en ligne de commande : Syntax highlighting for the Web
Erreurs, omissions, corrections merci de me le signaler
Original 23/10/2020
Document http://jc.etiemble.free.fr/abc/ JCE - version du 06/12/2020-0
