Skip to content

Instantly share code, notes, and snippets.

@devtronic
Last active March 25, 2026 10:28
Show Gist options
  • Select an option

  • Save devtronic/e7780dfdb31f4aa6df261739ef987d77 to your computer and use it in GitHub Desktop.

Select an option

Save devtronic/e7780dfdb31f4aa6df261739ef987d77 to your computer and use it in GitHub Desktop.
Install ionCube loader in Docker
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
# ioncube-loader-setup.sh
########################
# 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
EXT_SUFFIX=$(php -i | grep -qi "Thread Safety => enabled" && echo "_ts.so" || echo ".so")
LOADER_FILE=$(ls ioncube/*$PHP_VERSION$EXT_SUFFIX | 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}"
@devtronic
Copy link
Copy Markdown
Author

Fixed Thread Safety and removed hard coded php version

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment