diff --git a/.env.dist b/.env.dist index d9b0ebc..5d2a780 100644 --- a/.env.dist +++ b/.env.dist @@ -37,8 +37,8 @@ USER_CONFIG_PATH=./user # Debian OS available versions: jessie, stretch, buster, bullseye, bookworm DEBIAN_VERSION=bookworm -# PHP available versions: 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2 -PHP_VERSION=8.2 +# PHP available versions: 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2, 8.3 +PHP_VERSION=8.3 # Nginx settings NGINX_CACHE=yes @@ -47,10 +47,10 @@ NGINX_SSL=no NGINX_FASTCGI_BUFFERS="8 8k" NGINX_FASTCGI_BUFFER_SIZE=8k -# MySQL available versions: 5.6, 5.7, 8.0 -MYSQL_VERSION=8.0 -# MariaDB available versions: 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10, 10.11, 11.0 -MARIADB_VERSION=10.10 +# MySQL available versions: 5.6, 5.7, 8.0, 8.1, 8.2 +MYSQL_VERSION=8.2 +# MariaDB available versions: 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10, 10.11, 11.0, 11.1, 11.2 +MARIADB_VERSION=11.2 # MySQL vs MariaDB. Possible values: mysql, mariadb MYSQL_INST=mariadb @@ -162,18 +162,13 @@ PHP_IMAGICK=no PHP_GD=no PHP_IMAP=no -# Enable ionCube -# ionCube is a PHP module extension that loads encrypted PHP files and speeds up webpages. -# It is often required for PHP-based applications. -IONCUBE=no - EXTERNAL_NETWORK=no -RABBITMQ_VERSION=3.12.8 +RABBITMQ_VERSION=3.12.10 ELASTICSEARCH_VERSION=6.8.23 ELK_VERSION=7.16.0 -# MongoDB available versions: 4.2.24, 4.4.21, 5.0.17, 6.0.5 -MONGODB_VERSION=6.0.5 +# MongoDB available versions: 4.2.24, 4.4.26, 5.0.23, 6.0.12 +MONGODB_VERSION=6.0.12 # wkhtmltopdf available versions: 0.12.3, 0.12.4, 0.12.5, 0.12.6 WKHTMLTOPDF_VERSION=0.12.3 diff --git a/README.md b/README.md index 92df36f..2dd2fe3 100644 --- a/README.md +++ b/README.md @@ -138,6 +138,14 @@ sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker docker-symfony_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp ``` +# PHP extensions +| Extension | PHP 7.1 | PHP 7.2 | PHP 7.3 | PHP 7.4 | PHP 8.0 | PHP 8.1 | PHP 8.2 | PHP 8.3 | +|-----------|---------|---------|---------|---------|---------|---------|---------|---------| +| amqp | 1.11.0 | 1.11.0 | 1.11.0 | 2.1.1 | 2.1.1 | 2.1.1 | 2.1.1 | 2.1.1 | +| mongodb | 1.11.1 | 1.16.2 | 1.16.2 | 1.17.1 | 1.17.1 | 1.17.1 | 1.17.1 | 1.17.1 | +| redis | 5.3.7 | 6.0.2 | 6.0.2 | 6.0.2 | 6.0.2 | 6.0.2 | 6.0.2 | 6.0.2 | +| xdebug | 2.9.8 | 3.1.6 | 3.1.6 | 3.1.6 | 3.1.6 | 3.1.6 | 3.1.6 | 3.1.6 | + # JetBrains support us! diff --git a/commands/start.go b/commands/start.go index 6284677..8d6fc3f 100644 --- a/commands/start.go +++ b/commands/start.go @@ -103,6 +103,7 @@ func doChecks() { os.Getenv("SF_COMMUNITY_PATH") + "/symfony-docs", "./.composer", "./.composer/cache", + "./scripts/", sshKeyPath, os.Getenv("MYSQL_DUMP_PATH"), } @@ -204,137 +205,119 @@ func doPhpBuild() { packageList := []string{"gnupg2", "openssl", "git", "unzip", "libzip-dev", "nano", "libpng-dev", "libmagickwand-dev", "curl", "openssh-client", "less", "inkscape", "cron", "exiftool", "libicu-dev", "libmcrypt-dev", "libc-client-dev", "libkrb5-dev", "libssl-dev", "libxslt1-dev", "bash-completion"} peclInstall := []string{} + phpExtConfigure := []string{} phpExtInstall := []string{"pdo", "pdo_mysql", "opcache", "zip", "mysqli", "exif", "bcmath", "calendar", "intl", "soap", "sockets", "xsl"} phpExtEnable := []string{"mysqli", "calendar", "exif", "bcmath"} npmInstallGlobal := []string{} - if os.Getenv("SF_CLI") == "yes" { - packageList = append(packageList, "symfony-cli") + phpVersion := os.Getenv("PHP_VERSION") + + if phpVersion == "7.1" { + phpExtInstall = append(phpExtInstall, "mcrypt") + phpExtEnable = append(phpExtEnable, "mcrypt") } - if os.Getenv("PHP_GD") == "yes" { - phpExtInstall = append(phpExtInstall, "gd") + if phpVersion >= "7.1" && phpVersion <= "7.3" { + phpExtConfigure = append(phpExtConfigure, "docker-php-ext-configure zip --with-libzip") + } - util.Sed("__PHP_GD__", "&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/", "config/php/Dockerfile") - } else { - util.Sed("__PHP_GD__", "", "config/php/Dockerfile") + if phpVersion >= "7.4" && phpVersion <= "8.3" { + phpExtConfigure = append(phpExtConfigure, "docker-php-ext-configure zip") } - if os.Getenv("PHP_IMAP") == "yes" { - phpExtInstall = append(phpExtInstall, "imap") + phpExtConfigure = append(phpExtConfigure, "&& docker-php-ext-configure intl") - util.Sed("__PHP_IMAP__", "&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl", "config/php/Dockerfile") - } else { - util.Sed("__PHP_IMAP__", "", "config/php/Dockerfile") + if os.Getenv("PHP_IMAGICK") == "yes" { + peclInstall = append(peclInstall, "imagick") + phpExtEnable = append(phpExtEnable, "imagick") } - if os.Getenv("PHP_VERSION") != "8.2" { - if os.Getenv("PHP_IMAGICK") == "yes" { - peclInstall = append(peclInstall, "imagick") - phpExtEnable = append(phpExtEnable, "imagick") - util.Sed("__IMAGICK__", "", "config/php/Dockerfile") + if os.Getenv("PHP_GD") == "yes" { + supportedVersions := []string{"7.4", "8.0", "8.1", "8.2", "8.3"} + gdConfigure := "&& docker-php-ext-configure gd" + if !util.Contains(supportedVersions, phpVersion) { + gdConfigure += " --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/" + } else { + gdConfigure += " --with-freetype --with-jpeg" } + phpExtConfigure = append(phpExtConfigure, gdConfigure) + phpExtInstall = append(phpExtInstall, "gd") } - if os.Getenv("PHP_VERSION") == "5.6" || os.Getenv("PHP_VERSION") == "8.0" || os.Getenv("PHP_VERSION") == "8.1" || os.Getenv("PHP_VERSION") == "8.2" { - util.Sed("&& echo 'extension=apc.so' >> \\$PHP_INI_DIR/conf.d/docker-php-ext-apcu.ini \\\\", "", "config/php/Dockerfile") - } - - if os.Getenv("PHP_VERSION") != "5.6" && os.Getenv("PHP_VERSION") != "8.0" && os.Getenv("PHP_VERSION") != "8.1" && os.Getenv("PHP_VERSION") != "8.2" { - peclInstall = append(peclInstall, "apcu", "apcu_bc") - phpExtEnable = append(phpExtEnable, "apcu") - } + if os.Getenv("RABBITMQ") == "yes" { + packageList = append(packageList, "librabbitmq-dev", "librabbitmq4") - if os.Getenv("PHP_VERSION") == "5.6" { - phpExtInstall = append(phpExtInstall, "mcrypt") - phpExtEnable = append(phpExtEnable, "mcrypt") - } + if phpVersion >= "7.1" && phpVersion <= "7.3" { + peclInstall = append(peclInstall, "amqp-1.11.0") + } - if os.Getenv("PHP_VERSION") == "7.0" || os.Getenv("PHP_VERSION") == "7.1" { - phpExtInstall = append(phpExtInstall, "mcrypt") - phpExtEnable = append(phpExtEnable, "mcrypt") - } + if phpVersion >= "7.3" && phpVersion <= "8.3" { + peclInstall = append(peclInstall, "amqp-2.1.1") + } - if os.Getenv("PHP_VERSION") == "7.2" || os.Getenv("PHP_VERSION") == "7.3" || os.Getenv("PHP_VERSION") == "7.4" { - peclInstall = append(peclInstall, "mcrypt") - phpExtEnable = append(phpExtEnable, "mcrypt") + util.Sed("__RABBIT_MQ__", "&& echo 'extension=amqp.so' >> $$PHP_INI_DIR/conf.d/docker-php-ext-amqp.ini"+" \\", "config/php/Dockerfile") + } else { + util.Sed("__RABBIT_MQ__", "", "config/php/Dockerfile") } - if os.Getenv("PHP_VERSION") == "8.0" || os.Getenv("PHP_VERSION") == "8.1" { - peclInstall = append(peclInstall, "mcrypt") - phpExtEnable = append(phpExtEnable, "mcrypt") - } + if os.Getenv("MONGODB") == "yes" { + if phpVersion == "7.1" { + peclInstall = append(peclInstall, "mongodb-1.11.1") + util.Sed("__MONGODB__", "&& echo 'extension=mongodb.so' >> $$PHP_INI_DIR/conf.d/docker-php-ext-mongodb.ini"+" \\", "config/php/Dockerfile") + } - if os.Getenv("PHP_VERSION") == "7.4" { - util.Sed("docker-php-ext-configure zip --with-libzip && ", "", "config/php/Dockerfile") - util.Sed("docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && ", "docker-php-ext-configure gd --with-freetype --with-jpeg && ", "config/php/Dockerfile") - } + if phpVersion >= "7.2" && phpVersion <= "7.3" { + peclInstall = append(peclInstall, "mongodb-1.16.2") + } - if os.Getenv("PHP_VERSION") == "8.0" || os.Getenv("PHP_VERSION") == "8.1" || os.Getenv("PHP_VERSION") == "8.2" { - util.Sed("docker-php-ext-configure zip --with-libzip", "docker-php-ext-configure zip", "config/php/Dockerfile") - util.Sed("docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ &&", "docker-php-ext-configure gd --with-freetype --with-jpeg &&", "config/php/Dockerfile") + if phpVersion >= "7.4" && phpVersion <= "8.3" { + peclInstall = append(peclInstall, "mongodb-1.17.1") + } - if os.Getenv("PHP_IMAGICK") == "yes" { - util.Sed("__IMAGICK__", "&& cd /tmp && git clone https://github.com/Imagick/imagick && cd imagick && phpize && ./configure && make && make install && echo extension=imagick.so > /usr/local/etc/php/conf.d/docker-php-ext-imagick.ini && rm -rf /tmp/imagick && cd /tmp", "config/php/Dockerfile") + if phpVersion != "7.2" { + util.Sed("__MONGODB__", "&& echo 'extension=mongodb.so' >> $$PHP_INI_DIR/conf.d/docker-php-ext-mongodb.ini"+" \\", "config/php/Dockerfile") } else { - util.Sed("__IMAGICK__", "", "config/php/Dockerfile") + util.Sed("__MONGODB__", "&& echo 'extension=mongodb' >> $$PHP_INI_DIR/conf.d/docker-php-ext-mongodb.ini"+" \\", "config/php/Dockerfile") } + } else { + util.Sed("__MONGODB__", "", "config/php/Dockerfile") } - if os.Getenv("REDIS") == "yes" { - peclInstall = append(peclInstall, "redis") - phpExtEnable = append(phpExtEnable, "redis") + if os.Getenv("PHP_IMAP") == "yes" { + phpExtConfigure = append(phpExtConfigure, "&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl") + + phpExtInstall = append(phpExtInstall, "imap") } - if os.Getenv("RABBITMQ") == "yes" { - packageList = append(packageList, "librabbitmq-dev", "librabbitmq4") - if os.Getenv("PHP_VERSION") != "8.0" && os.Getenv("PHP_VERSION") != "8.1" && os.Getenv("PHP_VERSION") != "8.2" { - peclInstall = append(peclInstall, "amqp") - util.Sed("__RABBIT_MQ__", "&& echo 'extension=amqp.so' >> $PHP_INI_DIR/conf.d/docker-php-ext-amqp.ini", "config/php/Dockerfile") - } else { - util.Sed("__RABBIT_MQ__", "&& cd /tmp && git clone https://github.com/php-amqp/php-amqp && cd php-amqp && phpize && ./configure && make && make install && echo 'extension=amqp.so' > /usr/local/etc/php/conf.d/docker-php-ext-amqp.ini && rm -rf /tmp/php-amqp && cd /tmp", "config/php/Dockerfile") + if os.Getenv("REDIS") == "yes" { + if phpVersion == "7.1" { + peclInstall = append(peclInstall, "redis-5.3.7") } - } else { - util.Sed("__RABBIT_MQ__ \\\\", "", "config/php/Dockerfile") - } + if phpVersion >= "7.2" && phpVersion <= "8.3" { + peclInstall = append(peclInstall, "redis-6.0.2") + } - if os.Getenv("MONGODB") == "yes" { - peclInstall = append(peclInstall, "mongodb") - util.Sed("__MONGODB__", "&& echo 'extension=mongodb.so' >> $$PHP_INI_DIR/conf.d/docker-php-ext-mongodb.ini", "config/php/Dockerfile") - } else { - util.Sed("__MONGODB__", "", "config/php/Dockerfile") + phpExtEnable = append(phpExtEnable, "redis") } if os.Getenv("SUPERVISOR") == "yes" { packageList = append(packageList, "supervisor") } - npmInstallGlobal = append(npmInstallGlobal, "npm", "grunt-cli", "yargs", "async", "sass", "gulp", "requirejs", "pm2", "uglify-js", "typescript", "eslint") - if os.Getenv("XDEBUG") == "yes" { - if os.Getenv("PHP_VERSION") == "5.6" { - peclInstall = append(peclInstall, "xdebug-2.5.0") - } - - if os.Getenv("PHP_VERSION") == "7.0" { - peclInstall = append(peclInstall, "xdebug-2.7.0") - } - - if os.Getenv("PHP_VERSION") == "7.1" { - peclInstall = append(peclInstall, "xdebug-2.9.0") + if phpVersion == "7.1" { + peclInstall = append(peclInstall, "xdebug-2.9.8") } - if os.Getenv("PHP_VERSION") == "7.2" || os.Getenv("PHP_VERSION") == "7.3" || os.Getenv("PHP_VERSION") == "7.4" { - peclInstall = append(peclInstall, "xdebug-3.1.0") + if phpVersion >= "7.2" && phpVersion <= "7.4" { + peclInstall = append(peclInstall, "xdebug-3.1.6") } - if os.Getenv("PHP_VERSION") == "8.0" || os.Getenv("PHP_VERSION") == "8.1" || os.Getenv("PHP_VERSION") == "8.2" { - peclInstall = append(peclInstall, "xdebug-3.2.0") + if phpVersion >= "8.0" && phpVersion <= "8.3" { + peclInstall = append(peclInstall, "xdebug-3.3.1") } - phpExtEnable = append(phpExtEnable, "xdebug") - util.Copy("config/php/conf.d/xdebug.d4d", "config/php/conf.d/xdebug.ini") util.Sed("__PHP_XDEBUG_CLIENT_PORT__", os.Getenv("XDEBUG_CLIENT_PORT"), "config/php/conf.d/xdebug.ini") @@ -346,16 +329,24 @@ func doPhpBuild() { if os.Getenv("XDEBUG_REMOTE_CONNECT_BACK") != "" { util.AppendFile("config/php/conf.d/xdebug.ini", fmt.Sprintf("\nxdebug.remote_connect_back = %s", os.Getenv("XDEBUG_REMOTE_CONNECT_BACK"))) } + + if phpVersion >= "7.1" && phpVersion <= "8.3" { + util.Sed("__XDEBUG__", "&& echo 'zend_extension=xdebug.so' >> $$PHP_INI_DIR/conf.d/docker-php-ext-xdebug.ini"+" \\", "config/php/Dockerfile") + } else { + util.Sed("__XDEBUG__", "&& echo 'extension=xdebug.so' >> $$PHP_INI_DIR/conf.d/docker-php-ext-xdebug.ini"+" \\", "config/php/Dockerfile") + } } else { - util.Sed("__PHP_XDEBUG__", "", "config/php/Dockerfile") + util.Sed("__XDEBUG__", "", "config/php/Dockerfile") } - if os.Getenv("IONCUBE") == "yes" { - util.Sed("__PHP_IONCUBE__", "&& curl -fsSL 'https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz' -o ioncube.tar.gz && mkdir -p /tmp/ioncube && tar -xvzf ioncube.tar.gz && mv ioncube/ioncube_loader_lin_${PHP_VERSION}.so `php-config --extension-dir` && rm -Rf ioncube.tar.gz ioncube && docker-php-ext-enable ioncube_loader_lin_${PHP_VERSION}", "config/php/Dockerfile") - } else { - util.Sed("__PHP_IONCUBE__ \\\\", "", "config/php/Dockerfile") + util.Sed(" __CURL_INSECURE__", "", "config/php/Dockerfile") + + if os.Getenv("SF_CLI") == "yes" { + packageList = append(packageList, "symfony-cli") } + npmInstallGlobal = append(npmInstallGlobal, "npm", "grunt-cli", "yargs", "async", "sass", "gulp", "requirejs", "pm2", "uglify-js", "typescript", "eslint") + if os.Getenv("YARN") == "yes" { util.Sed("__YARN__", "&& apt-get remove -y cmdtest && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && echo \"deb https://dl.yarnpkg.com/debian/ stable main\" | tee /etc/apt/sources.list.d/yarn.list && apt-get update && apt-get install -y yarn", "config/php/Dockerfile") } else { @@ -392,9 +383,21 @@ func doPhpBuild() { } util.Sed("__PACKAGE_LIST__", strings.Join(packageList, " "), "config/php/Dockerfile") - util.Sed("__PHP_EXT_INSTALL__", strings.Join(phpExtInstall, " "), "config/php/Dockerfile") - util.Sed("__PHP_EXT_ENABLE__", strings.Join(phpExtEnable, " "), "config/php/Dockerfile") - util.Sed("__PECL_INSTALL__", strings.Join(peclInstall, " "), "config/php/Dockerfile") + util.Sed("__PHP_EXT_CONFIGURE__", strings.Join(phpExtConfigure, " ")+" \\", "config/php/Dockerfile") + util.Sed("__PHP_EXT_INSTALL__", "&& docker-php-ext-install -j$(nproc) "+strings.Join(phpExtInstall, " ")+" \\", "config/php/Dockerfile") + + if len(peclInstall) > 0 { + util.Sed("__PECL_INSTALL__", "&& pecl install "+strings.Join(peclInstall, " ")+" \\", "config/php/Dockerfile") + } else { + util.Sed("__PECL_INSTALL__", "", "config/php/Dockerfile") + } + + if len(phpExtEnable) > 0 { + util.Sed("__PHP_EXT_ENABLE__", "&& docker-php-ext-enable "+strings.Join(phpExtEnable, " ")+" \\", "config/php/Dockerfile") + } else { + util.Sed("__PHP_EXT_ENABLE__", "", "config/php/Dockerfile") + } + util.Sed("__NPM_INSTALL_GLOBAL__", strings.Join(npmInstallGlobal, " "), "config/php/Dockerfile") util.Sed("__CLEANUP__", "&& apt-get clean && rm -rf /var/lib/apt/lists/*", "config/php/Dockerfile") @@ -404,12 +407,6 @@ func doPhpBuild() { util.Sed("__SYMFONY_CLI__", "\\", "config/php/Dockerfile") } - if os.Getenv("PHP_VERSION") == "5.6" || os.Getenv("PHP_VERSION") == "7.0" { - util.Sed("__CURL_INSECURE__", "-k", "config/php/Dockerfile") - } else { - util.Sed(" __CURL_INSECURE__", "", "config/php/Dockerfile") - } - util.Sed(" \n", "", "config/php/Dockerfile") } diff --git a/config/php/Dockerfile.build b/config/php/Dockerfile.build index 60d06a3..bfa928c 100644 --- a/config/php/Dockerfile.build +++ b/config/php/Dockerfile.build @@ -30,8 +30,10 @@ RUN __SYMFONY_CLI__ __CLEANUP__ # Install PHP extensions. Type docker-php-ext-install to see available extensions -RUN docker-php-ext-configure zip --with-libzip __PHP_GD__ && docker-php-ext-configure intl __PHP_IMAP__ && docker-php-ext-install -j$(nproc) __PHP_EXT_INSTALL__ \ - && pecl install __PECL_INSTALL__ && docker-php-ext-enable __PHP_EXT_ENABLE__ \ +RUN __PHP_EXT_CONFIGURE__ + __PHP_EXT_INSTALL__ + __PECL_INSTALL__ + __PHP_EXT_ENABLE__ && ln -snf /usr/share/zoneinfo/${DEFAULT_TIMEZONE} /etc/localtime && echo ${DEFAULT_TIMEZONE} > /etc/timezone \ && printf '[PHP]\ndate.timezone = "%s"\n' ${DEFAULT_TIMEZONE} > $PHP_INI_DIR/conf.d/tzone.ini \ && printf '[CUSTOM]\nmemory_limit = "%s"\n' ${PHP_MEMORY_LIMIT} >> $PHP_INI_DIR/conf.d/custom.ini \ @@ -40,10 +42,9 @@ RUN docker-php-ext-configure zip --with-libzip __PHP_GD__ && docker-php-ext-conf && printf '\nmax_execution_time = %s\n' ${PHP_MAX_EXECUTION_TIME} >> $PHP_INI_DIR/conf.d/custom.ini \ && printf '\nxdebug.file_link_format = "%s"\n' ${XDEBUG_FILE_LINK_FORMAT} >> $PHP_INI_DIR/conf.d/custom.ini \ && printf '\nxdebug.idekey = "%s"\n' ${XDEBUG_IDE_KEY} >> $PHP_INI_DIR/conf.d/custom.ini \ - && echo 'extension=apc.so' >> $PHP_INI_DIR/conf.d/docker-php-ext-apcu.ini \ - __IMAGICK__ \ - __RABBIT_MQ__ \ - __MONGODB__ \ + __RABBIT_MQ__ + __MONGODB__ + __XDEBUG__ # Install composer && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \ && php composer-setup.php \ @@ -60,7 +61,6 @@ RUN docker-php-ext-configure zip --with-libzip __PHP_GD__ && docker-php-ext-conf __YARN__ \ # Install wkhtmltopdf __WKHTMLTOPDF__ \ - __PHP_IONCUBE__ \ __BLACKFIRE__ \ && curl -L __CURL_INSECURE__ https://cs.symfony.com/download/php-cs-fixer-v3.phar -o /usr/bin/php-cs-fixer && chmod a+x /usr/bin/php-cs-fixer \ && curl -L __CURL_INSECURE__ https://github.com/fabpot/local-php-security-checker/releases/download/v2.0.3/local-php-security-checker_2.0.3_linux_amd64 -o /usr/bin/local-php-security-checker && chmod a+x /usr/bin/local-php-security-checker \ diff --git a/docker/php.yml b/docker/php.yml index 9a5a40a..68ccdad 100644 --- a/docker/php.yml +++ b/docker/php.yml @@ -35,4 +35,5 @@ - ./config/php/php-fpm.d/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro - ./config/php/php-fpm.d/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf:ro - ./config/supervisor/conf.d/messenger-worker.conf:/etc/supervisor/conf.d/messenger-worker.conf + - ./scripts/check_php_extensions.sh:/var/www/scripts/check_php_extensions.sh #php_depends_on diff --git a/scripts/check_php_extensions.sh b/scripts/check_php_extensions.sh new file mode 100755 index 0000000..787a251 --- /dev/null +++ b/scripts/check_php_extensions.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +extensions=("zip" "int" "opcache" "imagick" "gd" "amqp" "mongodb" "imap" "mcrypt" "redis" "xdebug") + +is_extension_enabled() { + php -m | grep -q "$1" +} + +for extension in "${extensions[@]}"; do + if is_extension_enabled "$extension"; then + echo "$extension: ON" + else + echo "$extension: OFF" + fi +done \ No newline at end of file diff --git a/util/util.go b/util/util.go index 6efa937..35cc16d 100644 --- a/util/util.go +++ b/util/util.go @@ -215,3 +215,12 @@ func DownloadFile(filepath string, url string) (err error) { return nil } + +func Contains(slice []string, target string) bool { + for _, value := range slice { + if value == target { + return true + } + } + return false +}