Skip to content

Instantly share code, notes, and snippets.

@yvh
Last active March 12, 2018 08:41
Show Gist options
  • Save yvh/11181875 to your computer and use it in GitHub Desktop.
Save yvh/11181875 to your computer and use it in GitHub Desktop.
PHP Switch
#!/usr/bin/env bash
# Author Yannick Vanhaeren
# Version 1.0.0
# Functions
############
function usage
{
echo "usage: php-switch [-a] | [-c] | [-h] | [-r] phpversion"
}
# Main
#######
cli=1
apache2=1
reload=1
while getopts "achr" opt; do
case $opt in
a)
# Just apache2
cli=0
;;
c)
# Just cli
apache2=0
reload=0
;;
h)
usage
exit
;;
r)
reload=0
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
esac
done
shift $((OPTIND-1)) # remove parsed options and args from $@ list
PHPVERSION=$1
if [ -z "$1" ]; then
echo -e "\e[0;31mYou must specify a PHP version\e[0m"
exit 1
fi
if [ ! -d "/usr/local/php/$PHPVERSION" ]; then
echo -e "\e[0;31mPHP version $PHPVERSION not exist!\e[0m"
exit 1
fi
if [ $cli = 1 ]; then
echo -e "\e[0;32mSwtich to PHP version $PHPVERSION\e[0m"
exp="^/usr/local/php/.*"
find /usr/local/bin -type l |
while IFS= read -r link_name;
do
if [[ "$(readlink -f $link_name)" =~ $exp ]]; then
sudo rm -- $link_name
fi
done
sudo ln -fvs /usr/local/php/$PHPVERSION/bin/* /usr/local/bin/
fi
if [ $apache2 = 1 ]; then
echo -e "\e[0;32mSwitch apache2 module to PHP version $PHPVERSION\e[0m"
module=$(find /etc/apache2/mods-available -name "php[0-9].load" -exec basename {} \;)
if [ -n "$module" ]; then
module=${module%.*}
sudo a2dismod $module
sudo rm -f /usr/lib/apache2/modules/libphp*.so /etc/apache2/mods-available/php*.load
fi
sudo ln -fvs /usr/local/php/$PHPVERSION/apache2/libphp*.so /usr/lib/apache2/modules/
sudo ln -fvs /usr/local/php/$PHPVERSION/apache2/php*.load /etc/apache2/mods-available/
module=$(find /usr/local/php/$PHPVERSION/apache2/ -name "php[0-9].load" -exec basename {} \;)
module=${module%.*}
sudo a2enmod $module
fi
if [ $reload = 1 ]; then
echo -e "\e[0;32mReload apache2\e[0m"
sudo systemctl reload apache2
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment