Skip to content

Instantly share code, notes, and snippets.

@R4nch0X
Last active February 19, 2023 03:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save R4nch0X/b42abdf2095c59009c51b32898c2abc1 to your computer and use it in GitHub Desktop.
Save R4nch0X/b42abdf2095c59009c51b32898c2abc1 to your computer and use it in GitHub Desktop.
Simple and dinamic switch php version
#!/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