Move PHP loader installation to PHP installer file

This commit is contained in:
Edi Septriyanto
2021-12-18 10:38:11 +07:00
parent c45e4650b5
commit fc60cd0a57
6 changed files with 499 additions and 891 deletions

View File

@@ -164,9 +164,8 @@ DEFAULT_PHP_VERSION="7.4"
# to load protected and encoded files.
INSTALL_PHP_LOADER=false
# Available PHP loader: ioncube | sourceguardian
# leave it blank or "none" to skip PHP loader installation.
PHP_LOADER="none"
# Available PHP loader: ioncube | sourceguardian | all
PHP_LOADER="ioncube"
[php-phalcon]
# Phalcon is a PHP web framework based on the MVC pattern delivered as C-extension.

View File

@@ -103,18 +103,6 @@ if [ -f ./scripts/install_php.sh ]; then
. ./scripts/install_php.sh
fi
### Phalcon PHP installation ###
if [ -f ./scripts/install_phalcon.sh ]; then
echo ""
. ./scripts/install_phalcon.sh
fi
### Phalcon PHP installation ###
if [ -f ./scripts/install_phploader.sh ]; then
echo ""
. ./scripts/install_phploader.sh
fi
### Imagick installation ###
if [ -f ./scripts/install_imagemagick.sh ]; then
echo ""
@@ -127,6 +115,12 @@ if [ -f ./scripts/install_memcached.sh ]; then
. ./scripts/install_memcached.sh
fi
### Phalcon PHP installation ###
if [ -f ./scripts/install_phalcon.sh ]; then
echo ""
. ./scripts/install_phalcon.sh
fi
### MySQL database installation ###
if [ -f ./scripts/install_mariadb.sh ]; then
echo ""

View File

@@ -56,9 +56,9 @@ function add_php_repo() {
}
##
# Install PHP & FPM package.
# Install PHP and extensions.
##
function install_php_fpm() {
function install_php() {
export PHP_IS_INSTALLED="no"
# PHP version.
@@ -70,7 +70,7 @@ function install_php_fpm() {
# Checking if PHP already installed.
if [[ -n $(command -v "php${PHPv}") ]]; then
PHP_IS_INSTALLED="yes"
info "PHP ${PHPv} and it's extensions already exists, installation skipped."
info "PHP ${PHPv} and it's extensions already exists."
else
echo "Installing PHP ${PHPv} and required extensions..."
@@ -170,11 +170,40 @@ function install_php_fpm() {
run mkdir -p /var/log/php
fi
# Optimize PHP configuration.
# Optimize PHP & FPM configuration.
optimize_php_fpm "${PHPv}"
fi
}
##
# Restart PHP-FPM service.
##
function restart_php_fpm() {
# PHP version.
local PHPv="${1}"
if [[ -z "${PHPv}" ]]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
# Restart PHP-FPM service.
if [[ "${DRYRUN}" != true ]]; then
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
run systemctl reload "php${PHPv}-fpm"
success "php${PHPv}-fpm reloaded successfully."
elif [[ -n $(command -v "php${PHPv}") ]]; then
run systemctl start "php${PHPv}-fpm"
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
success "php${PHPv}-fpm started successfully."
else
error "Something goes wrong with PHP ${PHPv} & FPM installation."
fi
fi
else
info "php${PHPv}-fpm reloaded in dry run mode."
fi
}
##
# PHP & FPM Optimization.
##
@@ -393,24 +422,6 @@ EOL
# Fix cgi.fix_pathinfo (for PHP older than 5.3).
#sed -i "s/cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php/${PHPv}/fpm/php.ini
# Restart PHP-fpm server.
if [[ "${DRYRUN}" == true ]]; then
info "php${PHPv}-fpm reloaded in dry run mode."
else
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
run systemctl reload "php${PHPv}-fpm"
success "php${PHPv}-fpm reloaded successfully."
elif [[ -n $(command -v "php${PHPv}") ]]; then
run systemctl start "php${PHPv}-fpm"
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
success "php${PHPv}-fpm started successfully."
else
error "Something goes wrong with PHP ${PHPv} & FPM installation."
fi
fi
fi
}
##
@@ -563,25 +574,8 @@ session.bak_handler="memcache"
session.bak_path="tcp://127.0.0.1:11211"
EOL
success "PHP ${PHPv} Memcache module enabled."
success "PHP ${PHPv} Memcached extension enabled."
fi
# Reload PHP-FPM service.
echo "Restarting php${PHPv}-fpm to apply Memcached module."
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
run systemctl reload "php${PHPv}-fpm"
success "php${PHPv}-fpm restarted successfully."
elif [[ -n $(command -v "php${PHPv}") ]]; then
run systemctl start "php${PHPv}-fpm"
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
success "php${PHPv}-fpm started successfully."
else
info "Something went wrong with php${PHPv}-fpm installation."
fi
fi
else
info "It seems that PHP ${PHPv} not yet installed. Please install it before!"
fi
@@ -591,25 +585,253 @@ EOL
}
##
# Initialize PHP & FPM Installation.
# Install ionCube Loader.
##
function init_php_fpm_install() {
function install_ioncube_loader() {
echo "Installing ionCube PHP loader..."
# Delete old loaders file.
if [ -d /usr/lib/php/loaders/ioncube ]; then
echo "Remove old/existing ionCube PHP loader."
run rm -fr /usr/lib/php/loaders/ioncube
fi
local CURRENT_DIR && CURRENT_DIR=$(pwd)
run cd "${BUILD_DIR}" || return 1
echo "Downloading latest ionCube PHP loader..."
ARCH=${ARCH:-$(uname -p)}
if [[ "${ARCH}" == "x86_64" ]]; then
run wget -q --show-progress "https://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz"
run tar -xzf ioncube_loaders_lin_x86-64.tar.gz
run rm -f ioncube_loaders_lin_x86-64.tar.gz
else
run wget -q --show-progress "https://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz"
run tar -xzf ioncube_loaders_lin_x86.tar.gz
run rm -f ioncube_loaders_lin_x86.tar.gz
fi
run mv -f ioncube /usr/lib/php/loaders/
run cd "${CURRENT_DIR}" || return 1
}
##
# Enable ionCube Loader.
##
function enable_ioncube_loader() {
# PHP version.
local PHPv="${1}"
if [ -z "${PHPv}" ]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
echo "Enable ionCube PHP ${PHPv} loader."
if [[ "${DRYRUN}" != true ]]; then
if [[ -f "/usr/lib/php/loaders/ioncube/ioncube_loader_lin_${PHPv}.so" && -n $(command -v "php${PHPv}") ]]; then
cat > "/etc/php/${PHPv}/mods-available/ioncube.ini" <<EOL
[ioncube]
zend_extension=/usr/lib/php/loaders/ioncube/ioncube_loader_lin_${PHPv}.so
EOL
if [ ! -f "/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini" ]; then
run ln -s "/etc/php/${PHPv}/mods-available/ioncube.ini" \
"/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini"
fi
if [ ! -f "/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini" ]; then
run ln -s "/etc/php/${PHPv}/mods-available/ioncube.ini" \
"/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini"
fi
else
error "PHP ${PHPv} or ionCube loader not found."
fi
else
info "ionCube PHP ${PHPv} enabled in dry run mode."
fi
}
##
# Install SourceGuardian Loader.
##
function install_sourceguardian_loader() {
echo "Installing SourceGuardian PHP loader..."
# Delete old loaders file.
if [ -d /usr/lib/php/loaders/sourceguardian ]; then
echo "Remove old/existing loader."
run rm -fr /usr/lib/php/loaders/sourceguardian
fi
if [ ! -d "${BUILD_DIR}/sourceguardian" ]; then
run mkdir -p "${BUILD_DIR}/sourceguardian"
fi
local CURRENT_DIR && CURRENT_DIR=$(pwd)
run cd "${BUILD_DIR}/sourceguardian" || return 1
echo "Downloading latest SourceGuardian PHP loader..."
ARCH=${ARCH:-$(uname -p)}
if [[ "${ARCH}" == "x86_64" ]]; then
run wget -q --show-progress "https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz"
run tar -xzf loaders.linux-x86_64.tar.gz
run rm -f loaders.linux-x86_64.tar.gz
else
run wget -q --show-progress "https://www.sourceguardian.com/loaders/download/loaders.linux-x86.tar.gz"
run tar -xzf loaders.linux-x86.tar.gz
run rm -f loaders.linux-x86.tar.gz
fi
run cd "${CURRENT_DIR}" || return 1
run mv -f "${BUILD_DIR}/sourceguardian" /usr/lib/php/loaders/
}
##
# Enable SourceGuardian Loader.
##
function enable_sourceguardian_loader() {
# PHP version.
local PHPv="${1}"
if [[ -z "${PHPv}" ]]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
echo "Enable SourceGuardian PHP ${PHPv} loader."
if [[ "${DRYRUN}" != true ]]; then
if [[ -f "/usr/lib/php/loaders/sourceguardian/ixed.${PHPv}.lin" && -n $(command -v "php${PHPv}") ]]; then
cat > "/etc/php/${PHPv}/mods-available/sourceguardian.ini" <<EOL
[sourceguardian]
zend_extension=/usr/lib/php/loaders/sourceguardian/ixed.${PHPv}.lin
EOL
if [ ! -f "/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini" ]; then
run ln -s "/etc/php/${PHPv}/mods-available/sourceguardian.ini" \
"/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini"
fi
if [ ! -f "/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini" ]; then
run ln -s "/etc/php/${PHPv}/mods-available/sourceguardian.ini" \
"/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini"
fi
else
error "PHP ${PHPv} or SourceGuardian loader not found."
fi
else
info "SourceGuardian PHP ${PHPv} enabled in dry run mode."
fi
}
##
# Install PHP Loader.
##
function install_php_loader() {
local PHPv="${1}"
local SELECTED_PHP_LOADER="${2}"
if [[ -z "${PHPv}" ]]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
if [[ -z "${SELECTED_PHP_LOADER}" ]]; then
SELECTED_PHP_LOADER=${PHP_LOADER:-"ioncube"}
fi
# Install PHP loader.
if [[ "${PHPv}" != "unsupported" && ! $(version_older_than "${PHPv}" "5.6") ]]; then
if [[ "${AUTO_INSTALL}" == true ]]; then
if [[ "${INSTALL_PHP_LOADER}" == true ]]; then
DO_INSTALL_PHP_LOADER="y"
else
DO_INSTALL_PHP_LOADER="n"
fi
else
while [[ "${DO_INSTALL_PHP_LOADER}" != "y" && "${DO_INSTALL_PHP_LOADER}" != "n" ]]; do
read -rp "Do you want to install PHP Loader? [y/n]: " -i n -e DO_INSTALL_PHP_LOADER
done
fi
if [[ ${DO_INSTALL_PHP_LOADER} == y* || ${DO_INSTALL_PHP_LOADER} == Y* ]]; then
if ! "${AUTO_INSTALL}"; then
echo ""
echo "Available PHP Loaders:"
echo " 1). ionCube Loader (latest stable)"
echo " 2). SourceGuardian (latest stable)"
echo " 3). All loaders (ionCube, SourceGuardian)"
echo "--------------------------------------------"
while [[ ${SELECTED_PHP_LOADER} != "1" && ${SELECTED_PHP_LOADER} != "2" && \
${SELECTED_PHP_LOADER} != "3" && ${SELECTED_PHP_LOADER} != "ioncube" && \
${SELECTED_PHP_LOADER} != "sg" && ${SELECTED_PHP_LOADER} != "ic" && \
${SELECTED_PHP_LOADER} != "sourceguardian" && ${SELECTED_PHP_LOADER} != "all" ]]; do
read -rp "Select an option [1-3]: " -i "${PHP_LOADER}" -e SELECTED_PHP_LOADER
done
fi
# Create PHP loaders directory.
if [ ! -d /usr/lib/php/loaders ]; then
run mkdir -p /usr/lib/php/loaders
fi
case ${SELECTED_PHP_LOADER} in
1 | "ic" | "ioncube")
[ ! -d /usr/lib/php/loaders/ioncube ] && install_ioncube_loader
enable_ioncube_loader "${PHPv}"
;;
2 | "sg" | "sourceguardian")
[ ! -d /usr/lib/php/loaders/sourceguardian ] && install_sourceguardian_loader
enable_sourceguardian_loader "${PHPv}"
;;
"all")
[ ! -d /usr/lib/php/loaders/ioncube ] && install_ioncube_loader
enable_ioncube_loader "${PHPv}"
[ ! -d /usr/lib/php/loaders/sourceguardian ] && install_sourceguardian_loader
enable_sourceguardian_loader "${PHPv}"
;;
*)
error "Your selected PHP loader ${SELECTED_PHP_LOADER} is not supported yet."
;;
esac
else
info "PHP ${PHPv} ${SELECTED_PHP_LOADER} loader installation skipped."
fi
fi
}
##
# Initialize PHP Installation.
##
function init_php_install() {
local SELECTED_PHP_VERSIONS=()
local OPT_PHP_VERSIONS=()
local OPT_PHP_EXTENSIONS=()
local OPT_PHP_LOADER=${PHP_LOADER:-"ioncube"}
OPTS=$(getopt -o p:l: \
-l php-version: \
-n "init_php_fpm_install" -- "$@")
OPTS=$(getopt -o p:x:l: \
-l php-version:,php-extensions,php-loader: \
-n "init_php_install" -- "$@")
eval set -- "${OPTS}"
while true
do
case "${1}" in
-p|--php-version) shift
-p | --php-version) shift
OPT_PHP_VERSIONS+=("${1}")
shift
;;
-x | --php-extensions) shift
OPT_PHP_EXTENSIONS+=("${1}")
shift
;;
-l | --php-loader) shift
OPT_PHP_LOADER="${1}"
shift
;;
--) shift
break
;;
@@ -620,7 +842,7 @@ function init_php_fpm_install() {
esac
done
# Read versions from config file.
# Include versions from config file.
read -r -a SELECTED_PHP_VERSIONS <<< "${PHP_VERSIONS}"
if [[ "${#OPT_PHP_VERSIONS[@]}" -gt 0 ]]; then
@@ -629,7 +851,7 @@ function init_php_fpm_install() {
# Manually select PHP version in interactive mode.
if ! "${AUTO_INSTALL}"; then
echo "Which PHP version to be installed?"
echo "Supported PHP versions:"
echo "Available PHP versions:"
echo " 1). PHP 5.6 (EOL)"
echo " 2). PHP 7.0 (EOL)"
echo " 3). PHP 7.1 (EOL)"
@@ -655,40 +877,32 @@ function init_php_fpm_install() {
case "${SELECTED_PHP}" in
1 | "5.6")
#install_php_fpm "5.6"
SELECTED_PHP_VERSIONS+=("5.6")
;;
2 | "7.0")
#install_php_fpm "7.0"
SELECTED_PHP_VERSIONS+=("7.0")
;;
3 | "7.1")
#install_php_fpm "7.1"
SELECTED_PHP_VERSIONS+=("7.1")
;;
4 | "7.2")
#install_php_fpm "7.2"
SELECTED_PHP_VERSIONS+=("7.2")
;;
5 | "7.3")
#install_php_fpm "7.3"
SELECTED_PHP_VERSIONS+=("7.3")
;;
6 | "7.4")
#install_php_fpm "7.4"
SELECTED_PHP_VERSIONS+=("7.4")
;;
7 | "8.0")
#install_php_fpm "8.0"
SELECTED_PHP_VERSIONS+=("8.0")
;;
8 | "8.1")
#install_php_fpm "8.0"
SELECTED_PHP_VERSIONS+=("8.0")
;;
9 | "all")
# Select all PHP versions (except EOL & Beta).
SELECTED_PHP_VERSIONS=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0")
SELECTED_PHP_VERSIONS=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1")
;;
*)
error "Your selected PHP version ${SELECTED_PHP} is not supported yet."
@@ -705,13 +919,16 @@ function init_php_fpm_install() {
add_php_repo
# Install all selected PHP versions and extensions.
for VERSION in "${SELECTED_PHP_VERSIONS[@]}"; do
IS_PKG_AVAIL=$(apt-cache search "php${VERSION}" | grep -c "${VERSION}")
for PHPV in "${SELECTED_PHP_VERSIONS[@]}"; do
IS_PKG_AVAIL=$(apt-cache search "php${PHPV}" | grep -c "${PHPV}")
if [[ "${IS_PKG_AVAIL}" -gt 0 ]]; then
# Install PHP + default extensions.
install_php_fpm "${VERSION}"
install_php "${PHPV}"
install_php_loader "${PHPV}" "${OPT_PHP_LOADER}"
restart_php_fpm "${PHPV}"
else
error "PHP ${VERSION} package is not available on your operating system."
error "PHP ${PHPV} package is not available for your operating system."
fi
done
@@ -720,14 +937,16 @@ function init_php_fpm_install() {
info "LEMPer requires PHP ${DEFAULT_PHP_VERSION} as default to run its administration tool."
echo "PHP ${DEFAULT_PHP_VERSION} now being installed..."
install_php_fpm "${DEFAULT_PHP_VERSION}"
install_php "${DEFAULT_PHP_VERSION}"
install_php_loader "${DEFAULT_PHP_VERSION}" "${OPT_PHP_LOADER}"
restart_php_fpm "${DEFAULT_PHP_VERSION}"
fi
# Install PHP composer.
install_php_composer "${DEFAULT_PHP_VERSION}"
}
echo "[PHP & FPM Packages Installation]"
echo "[PHP & Extensions Installation]"
# Start running things from a call at the end so if this script is executed
# after a partial download it doesn't do anything.
@@ -741,5 +960,5 @@ if [[ -n $(command -v php5.6) && \
-n $(command -v php8.1) ]]; then
info "All available PHP version already exists, installation skipped."
else
init_php_fpm_install "$@"
init_php_install "$@"
fi

View File

@@ -1,444 +0,0 @@
#!/usr/bin/env bash
# PHP Loader Installer
# Min. Requirement : GNU/Linux Ubuntu 18.04
# Last Build : 11/12/2021
# Author : MasEDI.Net (me@masedi.net)
# Since Version : 1.3.0
# Include helper functions.
if [[ "$(type -t run)" != "function" ]]; then
BASE_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )
# shellcheck disable=SC1091
. "${BASE_DIR}/helper.sh"
fi
# Make sure only root can run this installer script.
requires_root
# Make sure only supported distribution can run this installer script.
preflight_system_check
##
# Install ionCube Loader.
#
function install_ioncube() {
echo "Installing ionCube PHP loader..."
# Delete old loaders file.
if [ -d /usr/lib/php/loaders/ioncube ]; then
echo "Removing old/existing ionCube PHP loader..."
run rm -fr /usr/lib/php/loaders/ioncube
fi
local CURRENT_DIR && CURRENT_DIR=$(pwd)
run cd "${BUILD_DIR}" || return 1
echo "Download latest ionCube PHP loader..."
ARCH=${ARCH:-$(uname -p)}
if [[ "${ARCH}" == "x86_64" ]]; then
run wget -q "https://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz"
run tar -xzf ioncube_loaders_lin_x86-64.tar.gz
run rm -f ioncube_loaders_lin_x86-64.tar.gz
else
run wget -q "https://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz"
run tar -xzf ioncube_loaders_lin_x86.tar.gz
run rm -f ioncube_loaders_lin_x86.tar.gz
fi
run mv -f ioncube /usr/lib/php/loaders/
run cd "${CURRENT_DIR}" || return 1
}
##
# Enable ionCube Loader.
#
function enable_ioncube() {
# PHP version.
local PHPv="${1}"
if [ -z "${PHPv}" ]; then
PHPv=${PHP_VERSION:-"7.4"}
fi
echo "Enable ionCube PHP ${PHPv} loader"
if [[ "${DRYRUN}" == true ]]; then
info "ionCube PHP ${PHPv} enabled in dry run mode."
else
if [[ -f "/usr/lib/php/loaders/ioncube/ioncube_loader_lin_${PHPv}.so" && -n $(command -v "php${PHPv}") ]]; then
cat > "/etc/php/${PHPv}/mods-available/ioncube.ini" <<EOL
[ioncube]
zend_extension=/usr/lib/php/loaders/ioncube/ioncube_loader_lin_${PHPv}.so
EOL
if [ ! -f "/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini" ]; then
run ln -s "/etc/php/${PHPv}/mods-available/ioncube.ini" \
"/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini"
fi
if [ ! -f "/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini" ]; then
run ln -s "/etc/php/${PHPv}/mods-available/ioncube.ini" \
"/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini"
fi
# Restart PHP-fpm server.
if [[ "${DRYRUN}" == true ]]; then
info "php${PHPv}-fpm reloaded in dry run mode."
else
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
run systemctl reload "php${PHPv}-fpm"
success "php${PHPv}-fpm reloaded successfully."
elif [[ -n $(command -v "php${PHPv}") ]]; then
run systemctl start "php${PHPv}-fpm"
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
success "php${PHPv}-fpm started successfully."
else
error "Something goes wrong with PHP ${PHPv} & FPM installation."
fi
fi
fi
else
error "PHP ${PHPv} or ionCube loader not found."
fi
fi
}
##
# Disable ionCube Loader.
#
function disable_ioncube() {
# PHP version.
local PHPv="${1}"
if [ -z "${PHPv}" ]; then
PHPv=${PHP_VERSION:-"7.4"}
fi
echo "Disabling ionCube PHP ${PHPv} loader"
run unlink "/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini"
run unlink "/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini"
}
##
# Remove ionCube Loader.
#
function remove_ioncube() {
# PHP version.
local PHPv="${1}"
if [[ -z "${PHPv}" ]]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
echo "Uninstalling ionCube PHP ${PHPv} loader..."
if [[ -f "/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini" || \
-f "/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini" ]]; then
disable_ioncube "${PHPv}"
fi
if [ -d /usr/lib/php/loaders/ioncube ]; then
run rm -fr /usr/lib/php/loaders/ioncube
success "ionCube PHP ${PHPv} loader has been removed."
else
info "ionCube PHP ${PHPv} loader couldn't be found."
fi
}
##
# Install SourceGuardian Loader.
#
function install_sourceguardian() {
echo "Installing SourceGuardian PHP loader..."
# Delete old loaders file.
if [ -d /usr/lib/php/loaders/sourceguardian ]; then
echo "Remove old/existing loader..."
run rm -fr /usr/lib/php/loaders/sourceguardian
fi
if [ ! -d "${BUILD_DIR}/sourceguardian" ]; then
run mkdir -p "${BUILD_DIR}/sourceguardian"
fi
local CURRENT_DIR && CURRENT_DIR=$(pwd)
run cd "${BUILD_DIR}/sourceguardian" || return 1
echo "Download latest SourceGuardian PHP loader..."
ARCH=${ARCH:-$(uname -p)}
if [[ "${ARCH}" == "x86_64" ]]; then
run wget -q "https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz"
run tar -xzf loaders.linux-x86_64.tar.gz
run rm -f loaders.linux-x86_64.tar.gz
else
run wget -q "https://www.sourceguardian.com/loaders/download/loaders.linux-x86.tar.gz"
run tar -xzf loaders.linux-x86.tar.gz
run rm -f loaders.linux-x86.tar.gz
fi
run cd "${CURRENT_DIR}" || return 1
run mv -f "${BUILD_DIR}/sourceguardian" /usr/lib/php/loaders/
}
##
# Enable SourceGuardian Loader.
#
function enable_sourceguardian() {
# PHP version.
local PHPv="${1}"
if [[ -z "${PHPv}" ]]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
echo "Enable SourceGuardian PHP ${PHPv} loader..."
if [[ "${DRYRUN}" == true ]]; then
info "SourceGuardian PHP ${PHPv} enabled in dry run mode."
else
if [[ -f "/usr/lib/php/loaders/sourceguardian/ixed.${PHPv}.lin" && -n $(command -v "php${PHPv}") ]]; then
cat > "/etc/php/${PHPv}/mods-available/sourceguardian.ini" <<EOL
[sourceguardian]
zend_extension=/usr/lib/php/loaders/sourceguardian/ixed.${PHPv}.lin
EOL
if [ ! -f "/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini" ]; then
run ln -s "/etc/php/${PHPv}/mods-available/sourceguardian.ini" \
"/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini"
fi
if [ ! -f "/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini" ]; then
run ln -s "/etc/php/${PHPv}/mods-available/sourceguardian.ini" \
"/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini"
fi
# Restart PHP-fpm server.
if [[ "${DRYRUN}" == true ]]; then
info "php${PHPv}-fpm reloaded in dry run mode."
else
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
run systemctl reload "php${PHPv}-fpm"
success "php${PHPv}-fpm reloaded successfully."
elif [[ -n $(command -v "php${PHPv}") ]]; then
run systemctl start "php${PHPv}-fpm"
if [[ $(pgrep -c "php-fpm${PHPv}") -gt 0 ]]; then
success "php${PHPv}-fpm started successfully."
else
error "Something goes wrong with PHP ${PHPv} & FPM installation."
fi
fi
fi
else
error "PHP ${PHPv} or SourceGuardian loader not found."
fi
fi
}
##
# Disable SourceGuardian Loader.
#
function disable_sourceguardian() {
# PHP version.
local PHPv="${1}"
if [[ -z "${PHPv}" ]]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
echo "Disabling SourceGuardian PHP ${PHPv} loader"
run unlink "/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini"
run unlink "/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini"
}
##
# Remove SourceGuardian Loader.
#
function remove_sourceguardian() {
# PHP version.
local PHPv="${1}"
if [[ -z "${PHPv}" ]]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
echo "Uninstalling SourceGuardian PHP ${PHPv} loader..."
if [[ -f "/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini" || \
-f "/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini" ]]; then
disable_sourceguardian "${PHPv}"
fi
if [ -d /usr/lib/php/loaders/sourceguardian ]; then
run rm -fr /usr/lib/php/loaders/sourceguardian
success "SourceGuardian PHP ${PHPv} loader has been removed."
else
info "SourceGuardian PHP ${PHPv} loader couldn't be found."
fi
}
##
# Initialize PHP Loader Installation.
#
function init_phploader_install() {
local SELECTED_PHP_LOADER=""
OPTS=$(getopt -o p:l:ir \
-l php-version:,php-loader:,install,remove \
-n "init_phploader_install" -- "$@")
eval set -- "${OPTS}"
while true
do
case "${1}" in
-p|--php-version) shift
OPT_PHP_VERSION="${1}"
shift
;;
-l|--php-loader) shift
OPT_PHP_LOADER="${1}"
shift
;;
-i|--install) shift
#ACTION="install"
;;
-r|--remove) shift
#ACTION="remove"
;;
--) shift
break
;;
*)
fail "Invalid argument: ${1}"
exit 1
;;
esac
done
if [ -n "${OPT_PHP_VERSION}" ]; then
PHP_VERSION=${OPT_PHP_VERSION}
else
PHP_VERSION=${PHP_VERSION:-"7.4"}
fi
if [ -n "${OPT_PHP_LOADER}" ]; then
PHP_LOADER=${OPT_PHP_LOADER}
else
PHP_LOADER=${PHP_LOADER:-""}
fi
# Install PHP loader.
if [[ "${PHPv}" != "unsupported" && ! $(version_older_than "${PHPv}" "5.6") ]]; then
if [[ "${AUTO_INSTALL}" == true ]]; then
# PHP Loader.
if [ -z "${SELECTED_PHP_LOADER}" ]; then
SELECTED_PHP_LOADER=${PHP_LOADER:-""}
fi
if [[ -z "${SELECTED_PHP_LOADER}" || "${SELECTED_PHP_LOADER}" == "none" ]]; then
DO_INSTALL_PHP_LOADER="n"
else
DO_INSTALL_PHP_LOADER="y"
fi
else
while [[ "${DO_INSTALL_PHP_LOADER}" != "y" && "${DO_INSTALL_PHP_LOADER}" != "n" ]]; do
read -rp "Do you want to install PHP Loader? [y/n]: " -i n -e DO_INSTALL_PHP_LOADER
done
fi
if [[ ${DO_INSTALL_PHP_LOADER} == y* && ${INSTALL_PHP_LOADER} == true ]]; then
if ! "${AUTO_INSTALL}"; then
echo ""
echo "Available PHP Loaders:"
echo " 1). ionCube Loader (latest stable)"
echo " 2). SourceGuardian (latest stable)"
echo " 3). All loaders (ionCube, SourceGuardian)"
echo "--------------------------------------------"
while [[ ${SELECTED_PHP_LOADER} != "1" && ${SELECTED_PHP_LOADER} != "2" && \
${SELECTED_PHP_LOADER} != "3" && ${SELECTED_PHP_LOADER} != "ioncube" && \
${SELECTED_PHP_LOADER} != "sg" && ${SELECTED_PHP_LOADER} != "ic" && \
${SELECTED_PHP_LOADER} != "sourceguardian" && ${SELECTED_PHP_LOADER} != "all" ]]; do
read -rp "Select an option [1-3]: " -i "${PHP_LOADER}" -e SELECTED_PHP_LOADER
done
fi
# Create loaders directory
if [ ! -d /usr/lib/php/loaders ]; then
run mkdir -p /usr/lib/php/loaders
fi
case ${SELECTED_PHP_LOADER} in
1|"ic"|"ioncube")
install_ioncube
if [ "${PHPv}" != "all" ]; then
enable_ioncube "${PHPv}"
# Required for LEMPer default PHP.
if [[ "${PHPv}" != "7.4" && -n $(command -v php7.4) ]]; then
enable_ioncube "7.4"
fi
else
# Install all PHP version (except EOL & Beta).
for PHPver in 5.6 7.0 7.1 7.2 7.3 7.4 8.0; do
enable_ioncube "${PHPver}"
done
fi
;;
2|"sg"|"sourceguardian")
install_sourceguardian
if [ "${PHPv}" != "all" ]; then
enable_sourceguardian "${PHPv}"
# Required for LEMPer default PHP.
if [[ "${PHPv}" != "7.4" && -n $(command -v php7.4) ]]; then
enable_sourceguardian "7.4"
fi
else
# Install all PHP version (except EOL & Beta).
Versions="5.6 7.0 7.1 7.2 7.3 7.4 8.0"
for PHPver in ${Versions}; do
enable_sourceguardian "${PHPver}"
done
fi
;;
"all")
install_ioncube
install_sourceguardian
if [ "${PHPv}" != "all" ]; then
enable_ioncube "${PHPv}"
enable_sourceguardian "${PHPv}"
# Required for LEMPer default PHP
if [[ "${PHPv}" != "7.4" && -n $(command -v php7.4) ]]; then
enable_ioncube "7.4"
enable_sourceguardian "7.4"
fi
else
# Install all PHP version (except EOL & Beta).
Versions="5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1"
for PHPver in ${Versions}; do
enable_ioncube "${PHPver}"
enable_sourceguardian "${PHPver}"
done
fi
;;
*)
info "Your selected PHP loader ${SELECTED_PHP_LOADER} is not supported yet."
;;
esac
else
info "${SELECTED_PHP_LOADER^} PHP ${PHPv} loader installation skipped."
fi
fi
}
echo "[PHP Loaders Installation]"
# Start running things from a call at the end so if this script is executed
# after a partial download it doesn't do anything.
init_phploader_install "$@"

View File

@@ -2,7 +2,7 @@
# PHP & FPM Uninstaller
# Min. Requirement : GNU/Linux Ubuntu 18.04
# Last Build : 10/12/2021
# Last Build : 18/12/2021
# Author : MasEDI.Net (me@masedi.net)
# Since Version : 1.0.0
@@ -16,6 +16,9 @@ fi
# Make sure only root can run this installer script.
requires_root
##
# Remove PHP & FPM installation from system.
##
function remove_php_fpm() {
# PHP version.
local PHPv="${1}"
@@ -31,23 +34,23 @@ function remove_php_fpm() {
if dpkg-query -l | awk '/php/ { print $2 }' | grep -qwE "^php${PHPv}"; then
echo "Removing PHP ${PHPv} packages installation..."
# Remove geoip module.
# Remove geoip extension.
if "php${PHPv}" -m | grep -qw geoip; then
# Uninstall geoip pecl.
#run pecl uninstall geoip
# Unlink enabled module.
# Unlink enabled extension.
[ -f "/etc/php/${PHPv}/cli/conf.d/20-geoip.ini" ] && \
run unlink "/etc/php/${PHPv}/cli/conf.d/20-geoip.ini"
[ -f "/etc/php/${PHPv}/fpm/conf.d/20-geoip.ini" ] && \
run unlink "/etc/php/${PHPv}/fpm/conf.d/20-geoip.ini"
# Remove module.
# Remove extension.
run rm -f "/etc/php/${PHPv}/mods-available/geoip.ini"
fi
# Remove mcrypt module.
# Remove mcrypt extension.
if [[ "${PHPv//.}" -lt "72" ]]; then
if "php${PHPv}" -m | grep -qw mcrypt; then
run apt-get --purge remove -y "php${PHPv}-mcrypt"
@@ -57,14 +60,14 @@ function remove_php_fpm() {
# Uninstall mcrypt pecl.
#run pecl uninstall mcrypt
# Unlink enabled module.
# Unlink enabled extension.
[ -f "/etc/php/${PHPv}/cli/conf.d/20-mcrypt.ini" ] && \
run unlink "/etc/php/${PHPv}/cli/conf.d/20-mcrypt.ini"
[ -f "/etc/php/${PHPv}/fpm/conf.d/20-mcrypt.ini" ] && \
run unlink "/etc/php/${PHPv}/fpm/conf.d/20-mcrypt.ini"
# Remove module.
# Remove extension.
run rm -f "/etc/php/${PHPv}/mods-available/mcrypt.ini"
fi
else
@@ -107,13 +110,165 @@ function remove_php_fpm() {
fi
}
# Remove PHP & FPM.
##
# Disable ionCube Loader.
##
function disable_ioncube_loader() {
# PHP version.
local PHPv="${1}"
if [ -z "${PHPv}" ]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
echo "Disabling ionCube PHP ${PHPv} loader"
run unlink "/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini"
run unlink "/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini"
}
##
# Remove ionCube Loader.
##
function remove_ioncube_loader() {
# PHP version.
local PHPv="${1}"
if [ -z "${PHPv}" ]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
echo "Uninstalling ionCube PHP ${PHPv} loader..."
if [[ -f "/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini" || \
-f "/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini" ]]; then
disable_ioncube_loader "${PHPv}"
fi
if [ -d /usr/lib/php/loaders/ioncube ]; then
run rm -fr /usr/lib/php/loaders/ioncube
success "ionCube PHP ${PHPv} loader has been removed."
else
info "ionCube PHP ${PHPv} loader couldn't be found."
fi
}
##
# Disable SourceGuardian Loader.
##
function disable_sourceguardian_loader() {
# PHP version.
local PHPv="${1}"
if [ -z "${PHPv}" ]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
echo "Disabling SourceGuardian PHP ${PHPv} loader"
run unlink "/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini"
run unlink "/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini"
}
##
# Remove SourceGuardian Loader.
##
function remove_sourceguardian_loader() {
# PHP version.
local PHPv="${1}"
if [ -z "${PHPv}" ]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
echo "Uninstalling SourceGuardian PHP ${PHPv} loader..."
if [[ -f "/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini" || \
-f "/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini" ]]; then
disable_sourceguardian_loader "${PHPv}"
fi
if [ -d /usr/lib/php/loaders/sourceguardian ]; then
run rm -fr /usr/lib/php/loaders/sourceguardian
success "SourceGuardian PHP ${PHPv} loader has been removed."
else
info "SourceGuardian PHP ${PHPv} loader couldn't be found."
fi
}
##
# Remove PHP Loader.
##
function remove_php_loader() {
local PHPv="${1}"
local REMOVED_PHP_LOADER="${2}"
if [[ -z "${PHPv}" ]]; then
PHPv=${DEFAULT_PHP_VERSION:-"7.4"}
fi
if [[ -z "${REMOVED_PHP_LOADER}" ]]; then
REMOVED_PHP_LOADER=${PHP_LOADER:-"ioncube"}
fi
# Remove PHP loader.
if [[ "${PHPv}" != "unsupported" && ! $(version_older_than "${PHPv}" "5.6") ]]; then
if [[ "${AUTO_REMOVE}" == true ]]; then
if [[ "${FORCE_REMOVE}" == true ]]; then
DO_REMOVE_PHP_LOADER="y"
else
DO_REMOVE_PHP_LOADER="n"
fi
else
while [[ "${DO_REMOVE_PHP_LOADER}" != "y" && "${DO_REMOVE_PHP_LOADER}" != "n" ]]; do
read -rp "Do you want to remove PHP Loader? [y/n]: : " -e DO_REMOVE_PHP_LOADER
done
fi
if [[ ${DO_REMOVE_PHP_LOADER} == y* || ${DO_REMOVE_PHP_LOADER} == Y* ]]; then
if ! "${AUTO_INSTALL}"; then
echo ""
echo "Available PHP Loaders:"
echo " 1). ionCube Loader (latest stable)"
echo " 2). SourceGuardian (latest stable)"
echo " 3). All loaders (ionCube, SourceGuardian)"
echo "--------------------------------------------"
while [[ ${REMOVED_PHP_LOADER} != "1" && ${REMOVED_PHP_LOADER} != "2" && \
${REMOVED_PHP_LOADER} != "3" && ${REMOVED_PHP_LOADER} != "ioncube" && \
${REMOVED_PHP_LOADER} != "sg" && ${REMOVED_PHP_LOADER} != "ic" && \
${REMOVED_PHP_LOADER} != "sourceguardian" && ${REMOVED_PHP_LOADER} != "all" ]]; do
read -rp "Select an option [1-3]: " -i "${PHP_LOADER}" -e REMOVED_PHP_LOADER
done
fi
case ${REMOVED_PHP_LOADER} in
1 | "ic" | "ioncube")
disable_ioncube_loader "${PHPv}"
;;
2 | "sg" | "sourceguardian")
disable_sourceguardian_loader "${PHPv}"
;;
"all")
disable_ioncube_loader "${PHPv}"
disable_sourceguardian_loader "${PHPv}"
;;
*)
error "Your selected PHP loader ${REMOVED_PHP_LOADER} is not supported yet."
;;
esac
else
info "PHP ${PHPv} ${REMOVED_PHP_LOADER} loader removal skipped."
fi
fi
}
##
# Initialize PHP & FPM removal.
##
function init_php_fpm_removal() {
local REMOVED_PHP_VERSIONS=()
local OPT_PHP_VERSIONS=()
local OPT_PHP_LOADER=${PHP_LOADER:-"ioncube"}
OPTS=$(getopt -o p: \
-l php-version: \
OPTS=$(getopt -o p:l: \
-l php-version:,php-loader: \
-n "init_php_fpm_removal" -- "$@")
eval set -- "${OPTS}"
@@ -121,10 +276,14 @@ function init_php_fpm_removal() {
while true
do
case "${1}" in
-p|--php-version) shift
-p | --php-version) shift
OPT_PHP_VERSIONS+=("${1}")
shift
;;
-l | --php-loader) shift
OPT_PHP_LOADER="${1}"
shift
;;
--) shift
break
;;
@@ -135,62 +294,72 @@ function init_php_fpm_removal() {
esac
done
# Include versions from config file.
read -r -a REMOVED_PHP_VERSIONS <<< "${PHP_VERSIONS}"
if [[ "${#OPT_PHP_VERSIONS[@]}" -gt 0 ]]; then
REMOVED_PHP_VERSIONS+=("${OPT_PHP_VERSIONS[@]}")
else
# Manually select PHP version in interactive mode.
if ! "${AUTO_REMOVE}"; then
echo "Which PHP version to be removed?"
echo "Supported PHP versions:"
echo "Available PHP versions:"
echo " 1). PHP 5.6 (EOL)"
echo " 2). PHP 7.0 (EOL)"
echo " 3). PHP 7.1 (EOL)"
echo " 4). PHP 7.2 (EOL)"
echo " 5). PHP 7.3 (SFO)"
echo " 6). PHP 7.4 (Stable)"
echo " 7). PHP 8.0 (Latest Stable)"
echo " 8). All available versions"
echo " 9). Do not remove!"
echo " 7). PHP 8.0 (Stable)"
echo " 8). PHP 8.1 (Latest Stable)"
echo " 9). All installed versions"
echo " 10). Do not remove!"
echo "--------------------------------------------"
[ -n "${DEFAULT_PHP_VERSION}" ] && \
info "Default version is: ${DEFAULT_PHP_VERSION}"
while [[ ${SELECTED_PHP} != "1" && ${SELECTED_PHP} != "2" && ${SELECTED_PHP} != "3" && \
${SELECTED_PHP} != "4" && ${SELECTED_PHP} != "5" && ${SELECTED_PHP} != "6" && \
${SELECTED_PHP} != "7" && ${SELECTED_PHP} != "8" && ${SELECTED_PHP} != "9" && \
${SELECTED_PHP} != "10" && \
${SELECTED_PHP} != "5.6" && ${SELECTED_PHP} != "7.0" && ${SELECTED_PHP} != "7.1" && \
${SELECTED_PHP} != "7.2" && ${SELECTED_PHP} != "7.3" && ${SELECTED_PHP} != "7.4" && \
${SELECTED_PHP} != "8.0" && ${SELECTED_PHP} != "none" && ${SELECTED_PHP} != "all" ]]; do
${SELECTED_PHP} != "8.0" && ${SELECTED_PHP} != "8.1" && ${SELECTED_PHP} != "all" && \
${SELECTED_PHP} != "none" ]]; do
read -rp "Enter a PHP version from an option above [1-9]: " -i "${DEFAULT_PHP_VERSION}" -e SELECTED_PHP
done
case ${SELECTED_PHP} in
1|"5.6")
1 | "5.6")
REMOVED_PHP_VERSIONS+=("5.6")
;;
2|"7.0")
2 | "7.0")
REMOVED_PHP_VERSIONS+=("7.0")
;;
3|"7.1")
3 | "7.1")
REMOVED_PHP_VERSIONS+=("7.1")
;;
4|"7.2")
4 | "7.2")
REMOVED_PHP_VERSIONS+=("7.2")
;;
5|"7.3")
5 | "7.3")
REMOVED_PHP_VERSIONS+=("7.3")
;;
6|"7.4")
6 | "7.4")
REMOVED_PHP_VERSIONS+=("7.4")
;;
7|"8.0")
7 | "8.0")
REMOVED_PHP_VERSIONS+=("8.0")
;;
8|"all")
8 | "8.1")
REMOVED_PHP_VERSIONS+=("8.1")
;;
9 | "all")
# Select all PHP versions (except EOL & Beta).
REMOVED_PHP_VERSIONS=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0")
;;
9|n*)
10 | n*)
info "No PHP version will be removed."
return
;;
@@ -201,15 +370,11 @@ function init_php_fpm_removal() {
fi
fi
# If FORCE_REMOVE, then remove all installed PHP versions.
# If FORCE_REMOVE, then remove all installed PHP versions include the default.
if [[ "${FORCE_REMOVE}" == true ]]; then
# Include versions from config file.
read -r -a INSTALLED_PHP_VERSIONS <<< "${PHP_VERSIONS}"
# Also remove default LEMPer PHP.
DEFAULT_PHP_VERSION=${DEFAULT_PHP_VERSION:-"7.4"}
REMOVED_PHP_VERSIONS+=("${DEFAULT_PHP_VERSION}" "${INSTALLED_PHP_VERSIONS[@]}")
REMOVED_PHP_VERSIONS+=("${DEFAULT_PHP_VERSION}")
fi
# Sort PHP versions.
@@ -218,21 +383,22 @@ function init_php_fpm_removal() {
# Remove all selected PHP versions.
if [[ "${#REMOVED_PHP_VERSIONS[@]}" -gt 0 ]]; then
for VERSION in "${REMOVED_PHP_VERSIONS[@]}"; do
remove_php_fpm "${VERSION}"
for PHPV in "${REMOVED_PHP_VERSIONS[@]}"; do
remove_php_fpm "${PHPV}"
remove_php_loader "${PHPV}" "${OPT_PHP_LOADER}"
done
# Final clean up (executed only if no PHP version installed).
if [[ "${DRYRUN}" != true ]]; then
# New logic for multiple PHP removal in batch.
PHP_IS_EXISTS=false
for PHPv in "${REMOVED_PHP_VERSIONS[@]}"; do
[[ -n $(command -v "${PHPv}") ]] && PHP_IS_EXISTS=true
for PHPV in "${REMOVED_PHP_VERSIONS[@]}"; do
[[ -n $(command -v "${PHPV}") ]] && PHP_IS_EXISTS=true
done
if [[ "${PHP_IS_EXISTS}" == false ]]; then
echo "Removing additional unused PHP packages..."
run apt-get remove --purge -qq -y php-common php-pear php-xml pkg-php-tools spawn-fcgi fcgiwrap
run apt-get remove --purge -qq -y dh-php php-pear php-xml pkg-php-tools fcgiwrap spawn-fcgi
# Remove PHP repository.
run add-apt-repository -y --remove ppa:ondrej/php
@@ -242,10 +408,10 @@ function init_php_fpm_removal() {
[ -d /usr/share/php ] && run rm -fr /usr/share/php
[ -d /var/lib/php ] && run rm -fr /var/lib/php
success "All PHP packages installation completely removed."
else
info "PHP package & it's extensions removed in dry run mode."
success "All PHP package and it's extensions completely removed."
fi
else
info "PHP package & it's extensions removed in dry run mode."
fi
else
info "No PHP version removed."
@@ -260,13 +426,14 @@ if [[ -n $(command -v php5.6) || \
-n $(command -v php7.2) || \
-n $(command -v php7.3) || \
-n $(command -v php7.4) || \
-n $(command -v php8.0) ]]; then
-n $(command -v php8.0) || \
-n $(command -v php8.1) ]]; then
if [[ "${AUTO_REMOVE}" == true ]]; then
REMOVE_PHP="y"
else
while [[ "${REMOVE_PHP}" != "y" && "${REMOVE_PHP}" != "n" ]]; do
read -rp "Are you sure to remove PHP & FPM? [y/n]: " -e REMOVE_PHP
read -rp "Are you sure to remove PHP package? [y/n]: " -e REMOVE_PHP
done
fi

View File

@@ -1,327 +0,0 @@
#!/usr/bin/env bash
# PHP Loader Uninstaller
# Min. Requirement : GNU/Linux Ubuntu 18.04
# Last Build : 10/12/2021
# Author : MasEDI.Net (me@masedi.net)
# Since Version : 1.3.0
# Include helper functions.
if [[ "$(type -t run)" != "function" ]]; then
BASE_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )
# shellcheck disable=SC1091
. "${BASE_DIR}/helper.sh"
fi
# Make sure only root can run this installer script.
requires_root
##
# Disable ionCube Loader.
#
function disable_ioncube() {
# PHP version.
local PHPv="${1}"
if [ -z "${PHPv}" ]; then
PHPv=${PHP_VERSION:-"7.3"}
fi
echo "Disabling ionCube PHP ${PHPv} loader"
run unlink "/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini"
run unlink "/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini"
}
##
# Remove ionCube Loader.
#
function remove_ioncube() {
# PHP version.
local PHPv="${1}"
if [ -z "${PHPv}" ]; then
PHPv=${PHP_VERSION:-"7.3"}
fi
echo "Uninstalling ionCube PHP ${PHPv} loader..."
if [[ -f "/etc/php/${PHPv}/fpm/conf.d/05-ioncube.ini" || \
-f "/etc/php/${PHPv}/cli/conf.d/05-ioncube.ini" ]]; then
disable_ioncube "${PHPv}"
fi
if [ -d /usr/lib/php/loaders/ioncube ]; then
run rm -fr /usr/lib/php/loaders/ioncube
success "ionCube PHP ${PHPv} loader has been removed."
else
info "ionCube PHP ${PHPv} loader couldn't be found."
fi
}
##
# Disable SourceGuardian Loader.
#
function disable_sourceguardian() {
# PHP version.
local PHPv="${1}"
if [ -z "${PHPv}" ]; then
PHPv=${PHP_VERSION:-"7.3"}
fi
echo "Disabling SourceGuardian PHP ${PHPv} loader"
run unlink "/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini"
run unlink "/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini"
}
##
# Remove SourceGuardian Loader.
#
function remove_sourceguardian() {
# PHP version.
local PHPv="${1}"
if [ -z "${PHPv}" ]; then
PHPv=${PHP_VERSION:-"7.3"}
fi
echo "Uninstalling SourceGuardian PHP ${PHPv} loader..."
if [[ -f "/etc/php/${PHPv}/fpm/conf.d/05-sourceguardian.ini" || \
-f "/etc/php/${PHPv}/cli/conf.d/05-sourceguardian.ini" ]]; then
disable_sourceguardian "${PHPv}"
fi
if [ -d /usr/lib/php/loaders/sourceguardian ]; then
run rm -fr /usr/lib/php/loaders/sourceguardian
success "SourceGuardian PHP ${PHPv} loader has been removed."
else
info "SourceGuardian PHP ${PHPv} loader couldn't be found."
fi
}
##
# Initialize PHP Loader removal.
#
function init_phploader_removal() {
local SELECTED_PHP=""
local SELECTED_PHPLOADER=""
OPTS=$(getopt -o p:l:ir \
-l php-version:,loader:,install,remove \
-n "init_phploader_install" -- "$@")
eval set -- "${OPTS}"
while true
do
case "${1}" in
-p|--php-version) shift
SELECTED_PHP="${1}"
shift
;;
-l|--loader) shift
SELECTED_PHPLOADER="${1}"
shift
;;
-i|--install) shift
#ACTION="install"
;;
-r|--remove) shift
#ACTION="remove"
;;
--) shift
break
;;
*)
fail "Invalid argument: ${1}"
exit 1
;;
esac
done
if [[ "${AUTO_INSTALL}" == true ]]; then
if [ -z "${SELECTED_PHP}" ]; then
SELECTED_PHP=${PHP_VERSION:-"7.3"}
fi
else
echo "Which version of PHP to be installed?"
echo "Supported PHP version:"
echo " 1). PHP 5.6 (EOL)"
echo " 2). PHP 7.0 (EOL)"
echo " 3). PHP 7.1 (SFO)"
echo " 4). PHP 7.2 (Stable)"
echo " 5). PHP 7.3 (Latest stable)"
echo " 6). PHP 7.4 (Beta)"
echo " 7). All available versions"
echo "+--------------------------------------+"
while [[ ${SELECTED_PHP} != "1" && ${SELECTED_PHP} != "2" && ${SELECTED_PHP} != "3" && \
${SELECTED_PHP} != "4" && ${SELECTED_PHP} != "5" && ${SELECTED_PHP} != "6" && \
${SELECTED_PHP} != "7" && ${SELECTED_PHP} != "5.6" && ${SELECTED_PHP} != "7.0" && \
${SELECTED_PHP} != "7.1" && ${SELECTED_PHP} != "7.2" && ${SELECTED_PHP} != "7.3" && \
${SELECTED_PHP} != "7.4" && ${SELECTED_PHP} != "all"
]]; do
read -rp "Select a PHP version or an option [1-7]: " -e SELECTED_PHP
done
fi
local PHPv
case ${SELECTED_PHP} in
1|"5.6")
PHPv="5.6"
;;
2|"7.0")
PHPv="7.0"
;;
3|"7.1")
PHPv="7.1"
;;
4|"7.2")
PHPv="7.2"
;;
5|"7.3")
PHPv="7.3"
;;
6|"7.4")
PHPv="7.4"
;;
7|"all")
# Install all PHP version (except EOL & Beta).
PHPv="all"
;;
*)
PHPv="unsupported"
error "Your selected PHP version ${SELECTED_PHP} is not supported."
;;
esac
# Install PHP loader.
if [[ "${PHPv}" != "unsupported" && ! $(version_older_than "${PHPv}" "5.6") ]]; then
if [[ "${AUTO_INSTALL}" == true ]]; then
# PHP Loader.
if [ -z "${SELECTED_PHPLOADER}" ]; then
SELECTED_PHPLOADER=${PHP_LOADER:-""}
fi
if [[ -z "${SELECTED_PHPLOADER}" || "${SELECTED_PHPLOADER}" == "none" ]]; then
INSTALL_PHPLOADER="n"
else
INSTALL_PHPLOADER="y"
fi
else
while [[ "${INSTALL_PHPLOADER}" != "y" && "${INSTALL_PHPLOADER}" != "n" ]]; do
read -rp "Do you want to remove PHP Loaders? [y/n]: " -i n -e INSTALL_PHPLOADER
done
fi
if [[ ${INSTALL_PHPLOADER} == Y* || ${INSTALL_PHPLOADER} == y* ]]; then
if ! "${AUTO_INSTALL}"; then
echo ""
echo "Available PHP Loaders:"
echo " 1). ionCube Loader (latest stable)"
echo " 2). SourceGuardian (latest stable)"
echo " 3). All loaders (ionCube, SourceGuardian)"
echo "--------------------------------------------"
while [[ ${SELECTED_PHPLOADER} != "1" && ${SELECTED_PHPLOADER} != "2" && \
${SELECTED_PHPLOADER} != "3" && ${SELECTED_PHPLOADER} != "ioncube" && \
${SELECTED_PHPLOADER} != "sg" && ${SELECTED_PHPLOADER} != "ic" && \
${SELECTED_PHPLOADER} != "sourceguardian" && ${SELECTED_PHPLOADER} != "all"
]]; do
read -rp "Select an option [1-3]: " -i "${PHP_LOADER}" -e SELECTED_PHPLOADER
done
fi
# Create loaders directory
if [ ! -d /usr/lib/php/loaders ]; then
run mkdir -p /usr/lib/php/loaders
fi
case ${SELECTED_PHPLOADER} in
1|"ic"|"ioncube")
install_ioncube
if [ "${PHPv}" != "all" ]; then
enable_ioncube "${PHPv}"
# Required for LEMPer default PHP.
if [[ "${PHPv}" != "7.3" && -n $(command -v "php${DEFAULT_PHP_VERSION}") ]]; then
enable_ioncube "7.3"
fi
else
# Install all PHP version (except EOL & Beta).
enable_ioncube "5.6"
enable_ioncube "7.0"
enable_ioncube "7.1"
enable_ioncube "7.2"
enable_ioncube "7.3"
enable_ioncube "7.4"
fi
;;
2|"sg"|"sourceguardian")
install_sourceguardian
if [[ "${PHPv}" != "all" ]]; then
enable_sourceguardian "${PHPv}"
# Required for LEMPer default PHP.
if [[ "${PHPv}" != "7.3" && -n $(command -v php7.3) ]]; then
enable_sourceguardian "7.3"
fi
else
# Install all PHP version (except EOL & Beta).
enable_sourceguardian "5.6"
enable_sourceguardian "7.0"
enable_sourceguardian "7.1"
enable_sourceguardian "7.2"
enable_sourceguardian "7.3"
enable_sourceguardian "7.4"
fi
;;
"all")
install_ioncube
install_sourceguardian
if [ "${PHPv}" != "all" ]; then
enable_ioncube "${PHPv}"
enable_sourceguardian "${PHPv}"
# Required for LEMPer default PHP
if [[ "${PHPv}" != "7.3" && -n $(command -v php7.3) ]]; then
enable_ioncube "7.3"
enable_sourceguardian "7.3"
fi
else
# Install all PHP version (except EOL & Beta).
enable_ioncube "5.6"
enable_ioncube "7.0"
enable_ioncube "7.1"
enable_ioncube "7.2"
enable_ioncube "7.3"
enable_ioncube "7.4"
enable_sourceguardian "5.6"
enable_sourceguardian "7.0"
enable_sourceguardian "7.1"
enable_sourceguardian "7.2"
enable_sourceguardian "7.3"
enable_sourceguardian "7.4"
fi
;;
*)
info "Your selected PHP loader ${SELECTED_PHPLOADER} is not supported yet."
;;
esac
else
info "${SELECTED_PHPLOADER^} PHP ${PHPv} loader installation skipped."
fi
fi
}
echo "Uninstalling PHP Loader..."
# Start running things from a call at the end so if this script is executed
# after a partial download it doesn't do anything.
init_phploader_removal "$@"