HEX
Server: Apache
System: Linux hz.vslconceptsdomains.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: dkfounda (3233)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
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