#!/usr/bin/env bash # PHP installer # Min requirement : GNU/Linux Ubuntu 14.04 & 16.04 # Last Build : 17/09/2018 # Author : ESLabs.id (eslabs.id@gmail.com) # Make sure only root can run this installer script if [ $(id -u) -ne 0 ]; then echo "This script must be run as root..." exit 1 fi # Install PHP function install_php { if [[ -n $1 ]]; then PHPv=$1 else PHPv="7.0" # default php install 7.0 (latest stable recommendation) fi # Checking if php already installed if [[ -n $(which php${PHPv}) ]]; then echo "PHP $PHPv package already installed..." else echo "Installing PHP $PHPv..." apt-get install -y php${PHPv} php${PHPv}-common php${PHPv}-fpm php${PHPv}-cli php${PHPv}-mysql php${PHPv}-bcmath php${PHPv}-curl php${PHPv}-gd php${PHPv}-intl php${PHPv}-json php${PHPv}-mbstring php${PHPv}-imap php${PHPv}-pspell php${PHPv}-recode php${PHPv}-snmp php${PHPv}-sqlite3 php${PHPv}-tidy php${PHPv}-readline php${PHPv}-xml php${PHPv}-xmlrpc php${PHPv}-xsl php${PHPv}-gmp php${PHPv}-opcache php${PHPv}-soap php${PHPv}-zip php${PHPv}-dev php-geoip php-pear pkg-php-tools php-phalcon # Install php mcrypt? echo -en "\nDo you want to install PHP Mcrypt for encryption/decryption? [Y/n]: " read PhpMcryptInstall if [[ "$PhpMcryptInstall" == "Y" || "$PhpMcryptInstall" == "y" || "$PhpMcryptInstall" == "yes" ]]; then if [ "${PHPv//.}" -lt "72" ]; then apt-get install -y php${PHPv}-mcrypt elif [ "$PHPv" == "7.2" ]; then apt-get -y install gcc make autoconf libc-dev pkg-config apt-get -y install libmcrypt-dev libreadline-dev pecl install mcrypt-1.0.1 # enable module echo -e "\nCreating config file with new version" bash -c "echo extension=mcrypt.so > /etc/php/${PHPv}/mods-available/mcrypt.ini" if [ ! -f /etc/php/${PHPv}/cli/conf.d/20-mcrypt.ini ]; then ln -s /etc/php/${PHPv}/mods-available/mcrypt.ini /etc/php/${PHPv}/cli/conf.d/20-mcrypt.ini fi if [ ! -f /etc/php/${PHPv}/fpm/conf.d/20-mcrypt.ini ]; then ln -s /etc/php/${PHPv}/mods-available/mcrypt.ini /etc/php/${PHPv}/fpm/conf.d/20-mcrypt.ini fi else apt-get install -y dh-php # use libsodium instead echo -e "\nPHP Mcrypt is deprecated for PHP version $PHPv or greater, you should using Libsodium or OpenSSL." fi fi fi } # Remove PHP function remove_php { if [[ -n $1 ]]; then PHPv=$1 else PHPv="7.0" # default php install 7.0 (latest stable recommendation) fi echo "Uninstalling PHP $PHPv..." if [[ -n $(which php-fpm${PHPv}) ]]; then apt-get remove -y php${PHPv} php${PHPv}-common php${PHPv}-fpm php${PHPv}-cli php${PHPv}-mysql php${PHPv}-bcmath php${PHPv}-curl php${PHPv}-gd php${PHPv}-intl php${PHPv}-json php${PHPv}-mbstring php${PHPv}-imap php${PHPv}-pspell php${PHPv}-recode php${PHPv}-snmp php${PHPv}-sqlite3 php${PHPv}-tidy php${PHPv}-readline php${PHPv}-xml php${PHPv}-xmlrpc php${PHPv}-xsl php${PHPv}-gmp php${PHPv}-opcache php${PHPv}-soap php${PHPv}-zip php${PHPv}-dev php-geoip php-pear pkg-php-tools php-phalcon isMcrypt=$(/usr/bin/php${PHPv} -m | grep mcrypt) if [[ "_$isMcrypt" == "_mcrypt" ]]; then if [ "${PHPv//.}" -lt "72" ]; then apt-get remove -y php${PHPv}-mcrypt elif [ "$PHPv" == "7.2" ]; then # uninstall pecl uninstall mcrypt-1.0.1 # remove module rm /etc/php/${PHPv}/mods-available/mcrypt.ini if [ -f /etc/php/${PHPv}/cli/conf.d/20-mcrypt.ini ]; then rm /etc/php/${PHPv}/cli/conf.d/20-mcrypt.ini fi if [ -f /etc/php/${PHPv}/fpm/conf.d/20-mcrypt.ini ]; then rm /etc/php/${PHPv}/fpm/conf.d/20-mcrypt.ini fi else apt-get remove -y dh-php # use libsodium instead echo -e "\nIf you're installing Libsodium extension, then remove it separately." fi fi echo -e "\nPHP $PHPv installation has been removed." else echo "PHP $PHPv installation couldn't be found." fi } # Install ionCube Loader function install_ic { echo "Installing IonCube PHP loader..." arch=$(uname -p) if [[ "$arch" == "x86_64" ]]; then wget "http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz" tar xzf ioncube_loaders_lin_x86-64.tar.gz rm -f ioncube_loaders_lin_x86-64.tar.gz else wget "http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz" tar xzf ioncube_loaders_lin_x86.tar.gz rm -f ioncube_loaders_lin_x86.tar.gz fi # Delete old loaders file if [ -d /usr/lib/php/loaders/ioncube ]; then echo "Removing old/existing loaders..." rm -fr /usr/lib/php/loaders/ioncube fi echo "Installing latest loaders..." mv -f ioncube /usr/lib/php/loaders/ } # Enable ionCube Loader function enable_ic { if [[ -n $1 ]]; then PHPv=$1 else PHPv="7.0" # default php install 7.0 (latest stable recommendation) fi echo "Enabling IonCube PHP ${PHPv} loader" if [ -f /usr/lib/php/loaders/ioncube/ioncube_loader_lin_${PHPv}.so ]; then cat > /etc/php/${PHPv}/mods-available/ioncube.ini < /etc/php/${PHPv}/mods-available/sourceguardian.ini <