Artisan Développeur

Qualité, amélioration continue, agilité.

remplacer php7.0 par php 7.1/7.2/7.3 debian 9 (Stretch)

Il y a un dépôt pour les version récentes de php: https://packages.sury.org/

Pour l’installer regardons le README.txt, c’est une bonne habitude à prendre: https://packages.sury.org/php/README.txt

Il faut installer 3 packages:

  • apt-transport-https
  • lsb-release
  • ca-certificates

Avant d’installer, on peut vérifier si ils sont déjà présents:

dpkg --list apt-transport-https lsb-release ca-certificates

ou:

apt list --installed | grep "apt-transport-https"
apt list --installed | grep "lsb-release"
apt list --installed | grep "ca-certificates"

Si ça n’est pas installé:

apt install apt-transport-https lsb-release ca-certificates
(j'utilise apt au lieu de apt-get, un article en anglais sur les différences: https://itsfoss.com/apt-vs-apt-get-difference/)

On récupère la clef GPG du dépôt:

wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

On mets le dépôt dans un fichier de sources de apt:

sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

Mise à jour de la liste des paquets disponibles

apt update

D’abord je fais la liste des packages php déjà installés (pour avoir un historique de parano):

apt list --installed php* > php_packages_installed

Pour installer la dernière version de PHP il suffit de faire

apt upgrade

J’aime bien enlever ce qui n’est pas nécessaire:

apt remove php7.0* libapache2-mod-php7.0

Pour installer une version spécifique de PHP disons 7.2, je récupère tous les packages avec php7.0 dans leur noms depuis ma liste précédemment sauvegardée:

cat php_packages_installed | grep "php7.0" > php_packages_installed_php7_0
sed -i 's/php7.0/php7.2/g' php_packages_installed_php7_0
xargs -L1 -a php_packages_installed_php7_0  echo | cut -d/ -f1 > php_packages_to_install

Avant de faire l’installation des packages, une petite lecture de https://www.php.net/manual/en/migration71.deprecated.php
Par exemple, j’avais mcrypt installé …

sed -i '/php7.2-mcrypt/d' php_packages_to_install

Pour installer:

apt install $(xargs -a php_packages_to_install echo )

J’imagine qu’il est possible d’optimiser mes commandes bash, ou bien une option de conf de APT pour sélectionner php7.2, mais c’est comme ça que j’ai procédé pour tester dans ma vm.

Les commentaires/améliorations/informations sont les bienvenus !

ps: si php ne fonctionne pas vous pouvez essayer de faire :

dpkg-reconfigure libapache2-mod-php7.3

Comments ( 9 )

  1. / ReplyNemrod87
    Thanks for your help Good job
    • / ReplyNicolas
      :)
  2. / ReplyTransmic
    Merci pour le coup du apt remove php7.0* libapache2-mod-php7.0 mon WP continuait a fonctionner en php7.0 alors que j'avais upgradé PHP et ses extensions en 7.3
    • / ReplyNicolas
      Content que ça serve, je me suis pris la tête aussi avec ça :)
  3. / Replyfredu
    j'ai fait un apt remove de mon php7.0 mais je me retrouve avec une erreur 500.... partout sur tout mes sites et surtout je n'ai plus la main sur mon ispconfig Je suis vraiment dans la merde... une idée d'où cela peut venir?
    • / ReplyNicolas
      il faudrait voir si il y a un php par defaut, et si il y a un mod php pour apache qui est activé (ps: désolé pour le délais de réponse, j'ai pas mal de ping ces temps ci...)
  4. / ReplyFrédéric
    Bravo et merci. Je n'y serais pas arrivé seul : -) J'ai même installé PHP 8 avec cette méthode !
    • / ReplyNicolas
      Merci pour le message !
  5. / ReplyShinobic
    installer la version de PHP et les packets souhaités, puis: sudo a2dismod php?.? sudo a2enmod php?.? (remplacer les "?" par la version à désactiver et celle à activer) sudo service apache2 restart

Leave a reply

Your email address will not be published.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.