File: //usr/share/i360-php/native-php/install-clean.sh
#!/bin/bash
# Installing and unistalling i360.so for native phps
I360_PREFIX="/usr/share/i360-php"
CMD=${1}
PHP_PATHS=${2:-/usr/bin/php[0-9]*}
detect_arch_libs() {
if [ "$(uname -m)" = "x86_64" ]; then
echo "/x86_64-linux-gnu"
else
echo ""
fi
}
# Populate globals from `php -i`
# Sets: EXT_DIR, INI_DIR, PHP_DIR, VERS, PHPMOD_VERS
collect_php_info() {
local php_exe="$1"
local php_info php_version major minor tmp
php_info="$("${php_exe}" -i 2>/dev/null || true)"
EXT_DIR=$(printf '%s\n' "${php_info}" | awk -F'=> ' '$1 ~ /^extension_dir/ {gsub(/^ +| +$/,"",$2); print $2; exit}')
INI_DIR=$(printf '%s\n' "${php_info}" | awk -F'=> ' '$1 ~ /^Scan this dir for additional .ini files/ {gsub(/^ +| +$/,"",$2); print $2; exit}')
php_version=$(printf '%s\n' "${php_info}" | awk -F'=> ' '$1 ~ /^PHP Version/ {gsub(/^ +| +$/,"",$2); print $2; exit}')
if [ -z "${php_version}" ]; then
php_version="$("${php_exe}" --version 2>/dev/null | head -n1 | awk '{print $2}')"
fi
major=$(printf '%s' "${php_version}" | cut -d. -f1)
minor=$(printf '%s' "${php_version}" | cut -d. -f2)
PHPMOD_VERS="${major}.${minor}"
VERS="${major}${minor}"
if [ -n "${INI_DIR}" ]; then
tmp="${INI_DIR%/*}"
PHP_DIR="${tmp%/*}"
else
PHP_DIR=""
fi
}
function install_i360()
{
PHP_EXE=$1
if [ ! -f "${PHP_EXE}" ]; then
return
fi
LIBS=$(detect_arch_libs)
collect_php_info "${PHP_EXE}"
if [ -z "${EXT_DIR}" ] || [ -z "${VERS}" ]; then
return
fi
MODULE_DIR="${I360_PREFIX}/php${VERS}/usr/lib${LIBS}/php/modules"
MODULE_I360="${MODULE_DIR}/i360.so"
MODULE_INI="${I360_PREFIX}/php${VERS}/etc/php.d.all/i360.ini"
if [ -f "${MODULE_I360}" ]; then
rm -f "${EXT_DIR}/i360.so"
cp "${MODULE_I360}" "${EXT_DIR}"
fi
if [ -e "${MODULE_INI}" ] && [ -n "${PHP_DIR}" ] && [ -e "${PHP_DIR}/mods-available" ]; then
cp "${MODULE_INI}" "${PHP_DIR}/mods-available"
fi
PHPENMOD=/usr/sbin/phpenmod
if [ -e "${PHPENMOD}" ]; then
${PHPENMOD} -v "${PHPMOD_VERS}" i360 || true
fi
}
function uninstall_i360()
{
PHP_EXE=$1
if [ ! -f "${PHP_EXE}" ]; then
return
fi
collect_php_info "${PHP_EXE}"
if [ -e "${PHP_DIR}" ]; then
PHPDISMOD=/usr/sbin/phpdismod
if [ -e "${PHPDISMOD}" ];then
${PHPDISMOD} -v "${PHPMOD_VERS}" i360 || true
fi
if [ -n "${PHP_DIR}" ] && [ -d "${PHP_DIR}/mods-available" ]; then
find "${PHP_DIR}/mods-available" -maxdepth 1 -type f -name '*i360.ini*' -print0 2>/dev/null | xargs -0r rm -f --
fi
fi
if [ -n "${EXT_DIR}" ] && [ -f "${EXT_DIR}/i360.so" ]; then
rm -f "${EXT_DIR}/i360.so"
fi
}
if [ "$CMD" == "--install-i360" ]; then
for path in $PHP_PATHS
do install_i360 "${path}"
done
elif [ "$CMD" == "--uninstall-i360" ]; then
for path in $PHP_PATHS
do uninstall_i360 "${path}"
done
fi