Last active
February 19, 2023 03:51
-
-
Save AndyCHK/b42abdf2095c59009c51b32898c2abc1 to your computer and use it in GitHub Desktop.
Simple and dinamic switch php version
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
current_version=$(php -v | grep -o -E 'PHP [0-9]+\.[0-9]+' | awk '{print $2}') | |
start_version=$1 | |
if [[ -z "$start_version" ]]; then | |
echo "Error: No PHP version specified to activate." | |
echo "Use: $0 <version>" | |
exit 1 | |
fi | |
start-php() { | |
if ! command -v php"$start_version" &>/dev/null; then | |
echo "PHP version $start_version is not installed. Installing..." | |
if ! install-php "$start_version"; then | |
echo "Failed to install PHP $start_version." | |
return 1 | |
fi | |
fi | |
sudo a2enmod php"$start_version" >/dev/null | |
echo "* Restarting Apache..." | |
sudo service apache2 restart >/dev/null | |
echo "* Switching CLI PHP to $start_version..." | |
sudo update-alternatives --set php /usr/bin/php"$start_version" >/dev/null | |
sudo update-alternatives --set php /usr/bin/php"$start_version" >/dev/null | |
sudo update-alternatives --set phar /usr/bin/phar"$start_version" >/dev/null | |
sudo update-alternatives --set phar.phar /usr/bin/phar.phar"$start_version" >/dev/null | |
sudo update-alternatives --set phpize /usr/bin/phpize"$start_version" >/dev/null | |
sudo update-alternatives --set php-config /usr/bin/php-config"$start_version" >/dev/null | |
echo "* Switch to PHP $start_version complete." | |
} | |
stop-php() { | |
echo "* Disabling Apache PHP $current_version module..." | |
sudo a2dismod php"$current_version" >/dev/null | |
} | |
install-php() { | |
local version="$1" | |
echo "* Refreshing software repositories..." | |
sudo apt-get update >/dev/null | |
# Verificar si la versión deseada está disponible en el repositorio | |
if ! apt-cache showpkg php"$version" | grep -q "php$version"; then | |
echo "Error: PHP version $version is not available in the repository." | |
return 1 | |
fi | |
# Verificar si la versión deseada está disponible en el repositorio | |
if ! dpkg -s php"$version" &>/dev/null; then | |
if grep -q "^deb.*https://ppa.launchpadcontent.net/ondrej/php/ubuntu/.*jammy.*main" /etc/apt/sources.list /etc/apt/sources.list.d/*; then | |
echo "The repository ppa:ondrej/php already exists." | |
else | |
echo "* Setting up third-party repository to allow installation of multiple PHP versions..." | |
sudo add-apt-repository -y ppa:ondrej/php >/dev/null | |
echo "* Refreshing software repositories..." | |
sudo apt-get update >/dev/null | |
fi | |
echo "* Installing prerequisite software packages..." | |
sudo apt-get install -y software-properties-common >/dev/null | |
echo "* Installing PHP $version..." | |
sudo apt-get install -y php"$version" php"$version"-common php"$version"-cli >/dev/null | |
echo "* Installing PHP $version extensions..." | |
sudo apt-get install -y php"$version"-pgsql php"$version"-curl php"$version"-mcrypt php"$version"-soap php"$version"-bz2 php"$version"-gd php"$version"-mysql php"$version"-sqlite3 php"$version"-json php"$version"-opcache php"$version"-xml php"$version"-mbstring php"$version"-readline php"$version"-xmlrpc php"$version"-zip php-redis php"$version"-xdebug >/dev/null | |
echo "* Installing additional PHP extensions..." | |
sudo apt-get install -y php-composer-xdebug-handler php-memcache php-memcached php-redis >/dev/null | |
else | |
echo "PHP version $version is not available in the repository2." | |
return 1 | |
fi | |
} | |
stop-php | |
start-php |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment