diff --git a/Dockerfile b/Dockerfile index da48979..9f5bfba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,9 +33,12 @@ COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr RUN < /dev/null 2>&1; then + for file in /usr/local/etc/php/conf.d/docker-php-ext-*.ini; do + mv "$file" "$file.disabled" + done + fi + + # Now, enable the extensions listed in PHP_EXTENSIONS + for ext in $(echo "$PHP_EXTENSIONS" | sed -e 's/,/ /g'); do + disabled_ext_file="/usr/local/etc/php/conf.d/docker-php-ext-$ext.ini.disabled" + enabled_ext_file="/usr/local/etc/php/conf.d/docker-php-ext-$ext.ini" + + if [ -f "$disabled_ext_file" ]; then + echo "* Enabling PHP extension: $ext" + mv "$disabled_ext_file" "$enabled_ext_file" + elif [ -f "$enabled_ext_file" ]; then + # This case should not happen if the above disabling loop worked, but as a fallback. + echo "* PHP extension $ext was already enabled." + else + echo "* WARNING: PHP extension $ext not found, cannot enable." + fi + done +else + # If PHP_EXTENSIONS is not set, all extensions are enabled by default. + + # Enable all extensions which might have been disabled at some point first + if ls /usr/local/etc/php/conf.d/*php-ext*.disabled 1> /dev/null 2>&1; then + for file in /usr/local/etc/php/conf.d/*php-ext*.disabled; do + mv "$file" "${file%.disabled}" + done + fi + # Disable extensions based on PHP_DISABLE_EXTENSIONS + if [ ! -z "${PHP_DISABLE_EXTENSIONS}" ]; then + for ext in $(echo $PHP_DISABLE_EXTENSIONS | sed -e 's/,/ /g'); do + if [ -f "/usr/local/etc/php/conf.d/docker-php-ext-$ext.ini" ]; then + echo "* Disabling PHP extension: $ext" + mv /usr/local/etc/php/conf.d/docker-php-ext-$ext.ini /usr/local/etc/php/conf.d/docker-php-ext-$ext.ini.disabled + else + echo "* WARNING: PHP extension $ext not found, cannot disable" + fi + done + fi +fi + +# Special handling for XDEBUG through XDEBUG_MODE: + # Really disable XDEBUG if not required if [ -z "${XDEBUG_MODE}" ] || [ "${XDEBUG_MODE}" = "off" ]; then # completely not load xdebug if its off @@ -14,24 +68,6 @@ else echo "zend_extension=xdebug.so" > /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini fi -# Enable all extensions which might have been disabled at some point first -if ls /usr/local/etc/php/conf.d/*php-ext*.disabled 1> /dev/null 2>&1; then - for file in /usr/local/etc/php/conf.d/*php-ext*.disabled; do - mv "$file" "${file%.disabled}" - done -fi -# Disable extensions based on PHP_DISABLE_EXTENSIONS -if [ ! -z "${PHP_DISABLE_EXTENSIONS}" ]; then - for ext in $(echo $PHP_DISABLE_EXTENSIONS | sed -e 's/,/ /g'); do - if [ -f "/usr/local/etc/php/conf.d/docker-php-ext-$ext.ini" ]; then - echo "* Disabling PHP extension: $ext" - mv /usr/local/etc/php/conf.d/docker-php-ext-$ext.ini /usr/local/etc/php/conf.d/docker-php-ext-$ext.ini.disabled - else - echo "* WARNING: PHP extension $ext not found, cannot disable" - fi - done -fi - if [ ! -z "${APPLICATION_UID}" ]; then echo "* Change uid of 'application' user to $APPLICATION_UID" usermod -u $APPLICATION_UID application