plusieurs_versions_de_php_sous_debian

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
plusieurs_versions_de_php_sous_debian [2025/10/28 11:06] – [Suppression] Flazplusieurs_versions_de_php_sous_debian [2025/10/29 09:12] (Version actuelle) Flaz
Ligne 3: Ligne 3:
 ===== Besoin ===== ===== Besoin =====
  
-Je souhaite que différents site hébergés par le même serveur puissent utiliser différentes versions de PHP. De plus, je souhaite utiliser des versions supérieures à celles mise à disposition sur les dépôt officiels de Debian.+Je souhaite que différents site hébergés par le même serveur (système) puissent utiliser différentes versions de PHP. De plus, je souhaite utiliser des versions supérieures à celles mises à disposition sur les dépôts officiels de Debian.
  
 ===== Solution ===== ===== Solution =====
Ligne 11: Ligne 11:
 ==== Installation des dépôts ==== ==== Installation des dépôts ====
  
-L'installation peut se faire depuis un compte disposant de droits étendus via //sudo//. Elle fait via l'exécution d'un [[https://packages.sury.org/php/README.txt|script]] qui déclare le dépôt, installe des paquetages((Fournis pas les dépôt officiels de Debian.)) pré-requis et installe un paquetage((Fourni par sury.org.)) de configuration.+L'installation peut se faire depuis un compte disposant de droits étendus via //sudo//. Elle se fait via l'exécution d'un [[https://packages.sury.org/php/README.txt|script]] qui déclare le dépôt, installe des paquetages((Fournis pas les dépôt officiels de Debian.)) pré-requis et installe un paquetage((Fourni par sury.org.)) de configuration.
  
 Le tout peut se faire à l'aide d'une seule ligne de commande : Le tout peut se faire à l'aide d'une seule ligne de commande :
 <code>$ curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x</code> <code>$ curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x</code>
 +
 +<note>[[https://wiki.debian.org/AdditionalPHPVersions#Adding_the_SURY_Repository|wiki.debian.org]] indique une autre manière plus simple et __générique__ d'installer et configurer le dépôt //sury.org//. NON TESTÉE.</note>
  
 ==== Ajouter une version de PHP ==== ==== Ajouter une version de PHP ====
  
-Partant de là, l'installation de plusieurs versions de PHP se fait de manière standard, via apt. Par exemple :+Partant de là, l'installation de plusieurs versions de PHP se fait de manière standard, via //apt//. Par exemple :
 <code>$ sudo apt install php8.1</code> <code>$ sudo apt install php8.1</code>
-<note important>Cette installation peut installer automatiquement le paquetage libapache2-mod-php8.1 qui plantera certains environnement tels //Virtualmin// qui fonctionnent en CGI ou FPM mais pas en modules apache. Il suffit alors de désinstaller manuellement ce paquetage : <code>$ sudo apt remove libapache2-mod-php8.1</code></note>+<note important>Cette installation peut installer automatiquement le paquetage libapache2-mod-php8.1 qui plantera certains environnement tels //Virtualmin// qui fonctionnent en CGI ou FPM mais pas en //modules// apache. Il suffit alors de désinstaller manuellement ce paquetage : <code>$ sudo apt remove libapache2-mod-php8.1</code></note> 
 ==== Ajouter des modules ==== ==== Ajouter des modules ====
  
-Certains modules sont déjà disponibles car pré-compilés dans la version de PHP contenue par le paquetage de base. Il est donc vain de chercher à les installer via des paquetages complémentaires((Ces paquetages n'existent pas :-D)). Pour en connaître la liste :+Certains //modules PHP// sont déjà disponibles car pré-compilés dans la version de PHP contenue par le paquetage de base. Il est donc vain de chercher à les installer via des paquetages complémentaires((Ces paquetages n'existent pas :-D)). Pour en connaître la liste :
 <code>$ php8.1 -m</code> <code>$ php8.1 -m</code>
  
Ligne 30: Ligne 33:
  
 ===== Mises à jour ===== ===== Mises à jour =====
-Les mises à jour des versions de PHP ainsi installées ainsi que les modules se fait de la même que pour les paquetage Debian standard. C'est tout l'intérêt d'avoir ajouter les dépôts.+ 
 +Les mises à jour des versions de PHP et des modules additionnels ainsi installés se fait alors de la même que pour les paquetage Debian standard. C'est tout l'intérêt d'avoir ajouter les dépôts.
  
 Toutefois, certains problèmes peuvent apparaître notamment dans la configuration du dépôt. Toutefois, certains problèmes peuvent apparaître notamment dans la configuration du dépôt.
Ligne 52: Ligne 56:
 </code> </code>
  
-Comme l'indique le message d'avertissement, cela signifie que les paquetages mis à jour via le dépôt //sury.org// ne seront plus mis à jour !+Comme l'indique le message d'avertissement, les paquetages mis à jour via le dépôt //sury.org// ne seront plus mis à jour !
  
-Une technique testée avec succès consiste : +Une technique testée avec succès consiste à 
-  - supprimer le fichier de description du dépôt sury.org +  - supprimer le fichier de description du dépôt //sury.org// 
-  - relancer le script d'installation du dépôt sury.org+  - relancer le script d'installation du dépôt //sury.org//
  
 Soit, dans le cas testé : Soit, dans le cas testé :
Ligne 67: Ligne 71:
 À partir de là, la mise à jour des paquetages disponibles (apt update) ne doit plus signaler l'erreur indiquée précédemment. À partir de là, la mise à jour des paquetages disponibles (apt update) ne doit plus signaler l'erreur indiquée précédemment.
 === Focus === === Focus ===
-Concrètement, la déclaration des clés PGP a été modifiée. La relance du script, installe un nouveau trousseau de clé pour sury.org et y fait référence dans la déclaration du dépôt. Dans le cas considéré jusqu'ici :+Concrètement, la déclaration des clés PGP a été modifiée par //sury.org//. La relance du script, installe un nouveau trousseau de clé pour //sury.org// et y fait référence dans la déclaration du dépôt. Dans le cas considéré jusqu'ici :
   * dans l'ancienne version de //php.list//, on trouve <code>signed-by=/usr/share/keyrings/deb.sury.org-php.gpg</code>   * dans l'ancienne version de //php.list//, on trouve <code>signed-by=/usr/share/keyrings/deb.sury.org-php.gpg</code>
   * dans la nouvelle version de //php.list//, on trouve <code>signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg</code>   * dans la nouvelle version de //php.list//, on trouve <code>signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg</code>
Ligne 84: Ligne 88:
 Pour connaître la version utilisée via un shell : Pour connaître la version utilisée via un shell :
 <code>$ php -r "echo phpversion() ;"</code> <code>$ php -r "echo phpversion() ;"</code>
-Pour connaître la version CLI utilisée via un shell((La version de l'interface d'accès à PHP (phpx.y-cli) peut différer de la version exécutée de PHP (phpx.y).)) :+Pour connaître la version CLI utilisée via un shell((La version de l'interface d'accès à PHP (phpX.Y-cli) peut différer de la version exécutée de PHP (phpX.Y).)) :
 <code>$ php --version</code> <code>$ php --version</code>
  
Ligne 104: Ligne 108:
 === Ligne de commande === === Ligne de commande ===
  
-Sous Debian 12 avec les dépôts //sury.org//, la version par défaut de PHP est la version la plus élevée installée via le paquetage "//phpx.y//".+Par défaut, sous Debian 12 avec les dépôts //sury.org//, la version par défaut de PHP est la version la plus élevée installée via le paquetage "//phpX.Y//".
  
 La version par défaut utilisée en ligne de commande se modifie à l'aide de la commande //update-alternatives// : La version par défaut utilisée en ligne de commande se modifie à l'aide de la commande //update-alternatives// :
Ligne 123: Ligne 127:
 === Paquetages installés === === Paquetages installés ===
 <code> <code>
-dpkg --get-selections | grep phpx.y+dpkg --get-selections | grep phpX.Y
 </code> </code>
-où "x.y" est la version que l'on souhaite supprimer. Cette commande affichera les paquetage php ainsi que tout autre paquetage contenant "phpx.y" dans son nom (par exemple : libapache2-mod-phpx.y).+où "X.Y" est la version que l'on souhaite supprimer. Cette commande affichera les paquetages PHP ainsi que tout autre paquetage contenant "phpX.Y" dans son nom (par exemple : //libapache2-mod-phpX.Y//).
  
-=== Desinstallation ===+<code> 
 +dpkg -l | grep phpX.Y | awk '{print $2}' | xargs -n1 echo 
 +</code> 
 +devrait fournir le même résultat tout en préparant une suppression générale (voir plus loin). 
 + 
 +<code> 
 +apt list 'phpX.Y*' --installed 
 +</code> 
 +affichera la liste des paquetages PHP installés pour la version X.Y et indiquera des informations complémentaires telles que la version précise de chaque paquetage. 
 + 
 +=== Désinstallation ===
  
 Une fois que l'on a la liste des paquetages, on peut les désinstaller un à un : Une fois que l'on a la liste des paquetages, on peut les désinstaller un à un :
Ligne 139: Ligne 153:
 </code> </code>
  
-Si on tient à supprimer d'un seul coup tous les paquetages d'une version de PHP :+Si on tient à supprimer (//remove// ou //purge//d'un seul coup tous les paquetages d'une version de PHP :
 <code> <code>
-apt remove '^phpx\.y.*'+apt remove --dry-run '^phpX\.Y.*' 
 +     >>>>>>>>>>>>> pour voir ce que cela fera (dry-run) 
 +apt remove '^phpX\.Y.*'
 </code> </code>
 +L'expression régulière '^phpX\.Y.*' permet un contrôle précis des noms des paquetages qui seront supprimés.
 +
 +Si on veut supprimer (//remove// ou //purge//) tous les paquetages dont le nom mentionne la version de PHP visée((Par exemple, y compris //libapache2-mod-phpX.Y.//)), on reprendra la formule de recherche vue précédemment en modifiant l'action //xargs// :
 +
 +<code>
 +dpkg -l | grep phpX.Y | awk '{print $2}' | xargs -n1 sudo apt remove -y
 +</code>
 +
 +===== Sources =====
 +
 +  * [[https://wiki.debian.org/AdditionalPHPVersions|Additional PHP versions on Debian | 3rd party integration]] (en) (wiki.debian.org)
 +  * [[https://doknet.fr/tssr/exploiter-les-elements-de-linfrastructure-et-assurer-le-support-aux-utilisateurs/exploiter-des-serveurs-linux/tips-tricks-pour-php-et-debian-11/|Tips & tricks pour changer de version de php sur Debian]]
 +  * [[https://askubuntu.com/questions/277756/how-do-i-delete-all-packages-which-match-a-certain-pattern|How do I delete all packages which match a certain pattern?]]
 +  * [[https://linuxprograms.wordpress.com/tag/dpkg-get-selections/|dpkg tutorial – Package Manager for Ubuntu / Debian]]
 +
plusieurs_versions_de_php_sous_debian.1761645999.txt.gz · Dernière modification : de Flaz