Created
November 6, 2024 06:55
-
-
Save devtronic/e7780dfdb31f4aa6df261739ef987d77 to your computer and use it in GitHub Desktop.
Install ionCube loader in Docker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM php:8.3-apache | |
COPY --chmod=775 ioncube-loader-setup.sh /tmp/ioncube-loader-setup.sh | |
RUN set -x && bash -c /tmp/ioncube-loader-setup.sh |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
######################## | |
# ionCube INSTALLATION # | |
######################## | |
PHP_EXTENSION_DIR=$(php -r 'echo ini_get("extension_dir");') | |
echo "PHP_EXTENSION_DIR is $PHP_EXTENSION_DIR" | |
PHP_CONFIG_DIR=$(php -i | grep -ohP "with-config-file-scan-dir=([^']+)" | cut -d= -f2) | |
echo "PHP_CONFIG_DIR is $PHP_CONFIG_DIR" | |
PHP_VERSION=$(php -r 'list($major, $minor, $fix) = explode(".", phpversion(), 3); echo $major.".".$minor;') | |
echo "PHP_VERSION is $PHP_VERSION" | |
# Detect the correct ionCube loader architecture | |
IONCUBE_ARCH="" | |
ARCH=$(uname -m) | |
if [[ $ARCH == x86_64* ]]; then | |
IONCUBE_ARCH="x86-64" | |
elif [[ $ARCH == i*86 ]]; then | |
IONCUBE_ARCH="x86" | |
elif [[ $ARCH = aarch64 ]]; then | |
IONCUBE_ARCH="aarch64" | |
elif [[ $ARCH == arm* ]]; then | |
IONCUBE_ARCH="armv7l" | |
else | |
echo "Unsupported ionCube loader architecture!" 1>&2 | |
exit 1 | |
fi | |
echo "Detected ionCube loader architecture is $IONCUBE_ARCH based on $ARCH" | |
echo "Downloading the loader" | |
curl -O https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$IONCUBE_ARCH.tar.gz | |
echo "Extracting the loader" | |
tar -xzvf ioncube_loaders_lin_$IONCUBE_ARCH.tar.gz | |
LOADER_FILE=$(ls ioncube/*8.3*.so | cat) | |
LOADER_FILENAME=$(echo $LOADER_FILE | cut -d/ -f2) | |
if [ ! -f $LOADER_FILE ]; then | |
echo "No loader found for PHP $LOADER_LOADER_VERSION" 1>&2 | |
exit 2 | |
fi | |
echo "Copy loader file $LOADER_FILE to $PHP_EXTENSION_DIR" | |
cp $LOADER_FILE "$PHP_EXTENSION_DIR" | |
echo "Writing PHP config $PHP_CONFIG_DIR/00-ioncube.ini" | |
cat <<EOF | tee $PHP_CONFIG_DIR/00-ioncube.ini | |
zend_extension=$LOADER_FILENAME | |
EOF | |
# Cleanup | |
rm -rf ./ioncube | |
rm ioncube_loaders_lin_$IONCUBE_ARCH.tar.gz | |
rm -f "${0}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment