Switch between PHP versions

11

Linux bash script to switch between PHP versions (if you have installed multi versions)

Assume you have php5.6 , php7.3, php7.4, php8.1, php8.3, php8.4 this is a good switcher for you

php-change.sh

#!/bin/bash 

#How to use:
#./php-change.sh -f 7.3 -t 8.4

while getopts f:t: flag
do
    case "${flag}" in
        f) from=${OPTARG};;
        t) to=${OPTARG};;        
    esac
done

# Allowed PHP versions
allowed_versions=("5.6" "7.3" "7.4" "8.1" "8.3" "8.4")

# Check that a version is allowed
if [[ ! " ${allowed_versions[*]} " =~ " ${from} " ]]; then
    echo "Error: Invalid 'from' PHP version: $from"
    echo "Allowed versions: ${allowed_versions[*]}"
    exit 1
fi

if [[ ! " ${allowed_versions[*]} " =~ " ${to} " ]]; then
    echo "Error: Invalid 'to' PHP version: $to"
    echo "Allowed versions: ${allowed_versions[*]}"
    exit 1
fi

# If versions are the same, do nothing
if [[ "$from" == "$to" ]]; then
    echo "PHP version is already $from."
    exit 0
fi


sudo a2dismod php$from
sudo a2enmod php$to
sudo update-alternatives --set php /usr/bin/php$to
sudo systemctl restart apache2

echo "From: $from";
echo "To: $to";