Retour d’expérience de développeur PHP sous Linux.
Le besoin de base était de pouvoir switcher de version de PHP en quelques secondes.
Personnellement, j’ai 4 versions de PHP en parallèle sur mon Ubuntu 7.4, 8.0, 8.1 et 8.2), et pour faire un switch, j’avais quelques commandes Bash.
Les problèmes que j’avais étaient les suivants :
- Je n’avais pas de script complet la-dessus. Je lançais les commandes les unes après les autres.
- Je désactivai une version spécifique de PHP, pour activer la version que je souhaitai
J’ai voulu aller plus loin sur ces 2 points. J’ai donc fait un script complet qui désactive la version courante de PHP, et active la version de PHP demandé.
J’ai mis en place aussi plusieurs vérifications, pour voir ce qui était mis en argument du script.
Voici le script Bash :
#!/bin/bash
# This script switches the default PHP version on Ubuntu
# Check if script is being run as root
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
# Check if version number is provided
if [ $# -ne 1 ]; then
echo "Usage: $0 <version>" 1>&2
exit 1
fi
# Check if selected version is installed
if ! dpkg -s "php$1" >/dev/null 2>&1; then
echo "PHP version $1 is not installed" 1>&2
exit 1
fi
# Disable current PHP version
a2dismod php$(php -v | head -n 1 | cut -d " " -f 2 | cut -c 1-3)
# Enable selected PHP version
a2enmod php$1
# Switch CLI version
update-alternatives --set php /usr/bin/php$1
# Restart Apache for changes to take effect
systemctl restart apache2
echo "Switched PHP version to $1"
J’ai personnellement mis ce script dans un fichier, que j’ai nommé php-switch.sh.
Ensuite, pour changer de version de PHP, exécutez le script avec le numéro de version comme argument. Par exemple, pour basculer vers PHP 8.2, vous pouvez utiliser la commande suivante :
sudo ./php-switch.sh 8.2
Et pour basculer vers PHP 7.4, vous pouvez utiliser la commande suivante :
sudo ./php-switch.sh 7.4
Améliorations
Pour le moment, je ne vois pas forcément de piste d’amélioration, mais n’hésitez pas à m’en proposer si vous en avez.