From 292d02cf88fba784dc82f9b64ceb302e677ecdd7 Mon Sep 17 00:00:00 2001 From: Adriaan Wind Date: Thu, 29 Oct 2026 15:31:33 +0100 Subject: [PATCH] Add PHP 8.5 and update php-fpm images to 0.161 - docker-compose: devilboxcommunity/php-fpm:*-work-0.161 - env-example, dvl.sh, install defaults, magento2 override: add 8.5 / php85 - cfg/php-{ini,fpm,startup}-8.5 and log/php-fpm-8.5 (copied from 8.4) - cfg/php-ini-8.5 performance example: opcache.file_cache = /tmp (PHP 8.5 always loads OPcache and fails to start on "1") - dvl.sh: `dvl up` fallback uses DEFAULT_DVL_CONTAINERS (was missing php84), CheckPhpContainerFlavor fallback tag 0.155 -> 0.161 - .gitignore: add 8.5 entries, fix php-ini-8.4/*.conf -> php-fpm-8.4/*.conf - CI matrix, test skip lists, README/docs version lists, CHANGELOG --- .github/workflows/params-php.yml | 5 +- .gitignore | 8 +- .tests/scripts/get-modules.sh | 25 +++++- .tests/tests/framework-cakephp-php8.sh | 2 +- .tests/tests/framework-cakephp.sh | 2 +- .tests/tests/framework-drupal.sh | 2 +- CHANGELOG.md | 10 +++ README.md | 26 +++++- cfg/php-fpm-8.5/.keepme | 0 cfg/php-fpm-8.5/README.md | 54 +++++++++++++ cfg/php-fpm-8.5/devilbox-fpm.conf-default | 80 +++++++++++++++++++ cfg/php-fpm-8.5/devilbox-fpm.conf-pm_dynamic | 46 +++++++++++ cfg/php-fpm-8.5/devilbox-fpm.conf-pm_ondemand | 39 +++++++++ cfg/php-ini-8.5/.keepme | 0 cfg/php-ini-8.5/README.md | 26 ++++++ cfg/php-ini-8.5/devilbox-php.ini-default | 63 +++++++++++++++ cfg/php-ini-8.5/devilbox-php.ini-mailhog | 22 +++++ cfg/php-ini-8.5/devilbox-php.ini-mailpit | 22 +++++ cfg/php-ini-8.5/devilbox-php.ini-msmtp | 22 +++++ cfg/php-ini-8.5/devilbox-php.ini-performance | 51 ++++++++++++ cfg/php-ini-8.5/devilbox-php.ini-xdebug | 54 +++++++++++++ cfg/php-startup-8.5/.keepme | 0 .../01-update-apt-index.sh-example | 6 ++ cfg/php-startup-8.5/README.md | 29 +++++++ compose/docker-compose.override.yml-magento2 | 39 +++++++-- docker-compose.yml | 2 +- .../advanced/add-your-own-docker-image.md | 2 +- .../docs/configuration-files/env-file.md | 4 +- .../custom-container/enable-all-container.md | 1 + .../getting-started/agentic-tools-toggle.md | 2 +- .../change-container-versions.md | 8 +- .../enter-the-php-container.md | 1 + .../docs/getting-started/install-script.mdx | 6 +- .../getting-started/install-the-devilbox.md | 6 +- .../docs/getting-started/prerequisites.md | 2 +- .../getting-started/start-the-devilbox.md | 2 +- docs/src/content/docs/index.mdx | 2 +- .../src/content/docs/intermediate/dvl-cli.mdx | 2 +- .../content/docs/support/troubleshooting.md | 4 +- dvl.sh | 10 +-- env-example | 5 +- log/php-fpm-8.5/.keepme | 0 tests/test-install-sh.sh | 8 +- 43 files changed, 653 insertions(+), 47 deletions(-) create mode 100644 cfg/php-fpm-8.5/.keepme create mode 100644 cfg/php-fpm-8.5/README.md create mode 100644 cfg/php-fpm-8.5/devilbox-fpm.conf-default create mode 100644 cfg/php-fpm-8.5/devilbox-fpm.conf-pm_dynamic create mode 100644 cfg/php-fpm-8.5/devilbox-fpm.conf-pm_ondemand create mode 100644 cfg/php-ini-8.5/.keepme create mode 100644 cfg/php-ini-8.5/README.md create mode 100644 cfg/php-ini-8.5/devilbox-php.ini-default create mode 100644 cfg/php-ini-8.5/devilbox-php.ini-mailhog create mode 100644 cfg/php-ini-8.5/devilbox-php.ini-mailpit create mode 100644 cfg/php-ini-8.5/devilbox-php.ini-msmtp create mode 100644 cfg/php-ini-8.5/devilbox-php.ini-performance create mode 100644 cfg/php-ini-8.5/devilbox-php.ini-xdebug create mode 100644 cfg/php-startup-8.5/.keepme create mode 100755 cfg/php-startup-8.5/01-update-apt-index.sh-example create mode 100644 cfg/php-startup-8.5/README.md create mode 100644 log/php-fpm-8.5/.keepme diff --git a/.github/workflows/params-php.yml b/.github/workflows/params-php.yml index 326351804..d7efe5fd8 100644 --- a/.github/workflows/params-php.yml +++ b/.github/workflows/params-php.yml @@ -20,6 +20,7 @@ env: {"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "apache-2.4"}, {"PHP_SERVER": "PHP 8.3", "HTTPD_SERVER": "apache-2.4"}, {"PHP_SERVER": "PHP 8.4", "HTTPD_SERVER": "apache-2.4"}, + {"PHP_SERVER": "PHP 8.5", "HTTPD_SERVER": "apache-2.4"}, {"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "nginx-stable"}, {"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "nginx-stable"}, @@ -27,13 +28,15 @@ env: {"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "nginx-stable"}, {"PHP_SERVER": "PHP 8.3", "HTTPD_SERVER": "nginx-stable"}, {"PHP_SERVER": "PHP 8.4", "HTTPD_SERVER": "nginx-stable"}, + {"PHP_SERVER": "PHP 8.5", "HTTPD_SERVER": "nginx-stable"}, {"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "nginx-mainline"}, {"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "nginx-mainline"}, {"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "nginx-mainline"}, {"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "nginx-mainline"}, {"PHP_SERVER": "PHP 8.3", "HTTPD_SERVER": "nginx-mainline"}, - {"PHP_SERVER": "PHP 8.4", "HTTPD_SERVER": "nginx-mainline"} + {"PHP_SERVER": "PHP 8.4", "HTTPD_SERVER": "nginx-mainline"}, + {"PHP_SERVER": "PHP 8.5", "HTTPD_SERVER": "nginx-mainline"} ] diff --git a/.gitignore b/.gitignore index e461d8237..a3c91ef43 100644 --- a/.gitignore +++ b/.gitignore @@ -49,6 +49,7 @@ /log/php-fpm-8.2/* /log/php-fpm-8.3/* /log/php-fpm-8.4/* +/log/php-fpm-8.5/* !/log/.keepme !/log/*/.keepme @@ -96,6 +97,7 @@ /cfg/php-ini-8.2/*.ini /cfg/php-ini-8.3/*.ini /cfg/php-ini-8.4/*.ini +/cfg/php-ini-8.5/*.ini # Ignore custom disabled PHP.ini configs /cfg/php-ini-5.6/*.ini-disabled @@ -109,6 +111,7 @@ /cfg/php-ini-8.2/*.ini-disabled /cfg/php-ini-8.3/*.ini-disabled /cfg/php-ini-8.4/*.ini-disabled +/cfg/php-ini-8.5/*.ini-disabled # Ignore custom PHP-FPM configs /cfg/php-fpm-5.6/*.conf @@ -121,7 +124,8 @@ /cfg/php-fpm-8.1/*.conf /cfg/php-fpm-8.2/*.conf /cfg/php-fpm-8.3/*.conf -/cfg/php-ini-8.4/*.conf +/cfg/php-fpm-8.4/*.conf +/cfg/php-fpm-8.5/*.conf # Ignore custom PHP-FPM startup scripts /autostart/*.sh @@ -136,6 +140,7 @@ /cfg/php-startup-8.2/*.sh /cfg/php-startup-8.3/*.sh /cfg/php-startup-8.4/*.sh +/cfg/php-startup-8.5/*.sh # Ignore custom Varnish configs /cfg/varnish-4/*.vcl @@ -160,6 +165,7 @@ /mod/php-fpm-8.2/*.so /mod/php-fpm-8.3/*.so /mod/php-fpm-8.4/*.so +/mod/php-fpm-8.5/*.so # Ignore supervisord configs /supervisor/*.conf diff --git a/.tests/scripts/get-modules.sh b/.tests/scripts/get-modules.sh index b997ff91e..38302c3e4 100755 --- a/.tests/scripts/get-modules.sh +++ b/.tests/scripts/get-modules.sh @@ -67,6 +67,7 @@ PHP81_BASE="$( get_modules "8.1" "base" )" PHP82_BASE="$( get_modules "8.2" "base" )" PHP83_BASE="$( get_modules "8.3" "base" )" PHP84_BASE="$( get_modules "8.4" "base" )" +PHP85_BASE="$( get_modules "8.5" "base" )" PHP74_MODS="$( get_modules "7.4" "mods" )" PHP80_MODS="$( get_modules "8.0" "mods" )" @@ -74,13 +75,14 @@ PHP81_MODS="$( get_modules "8.1" "mods" )" PHP82_MODS="$( get_modules "8.2" "mods" )" PHP83_MODS="$( get_modules "8.3" "mods" )" PHP84_MODS="$( get_modules "8.4" "mods" )" +PHP85_MODS="$( get_modules "8.5" "mods" )" ### ### Todo: add ioncube ### -#MODS="$( echo "${PHP74_MODS}, ${PHP80_MODS}, ${PHP81_MODS}, ${PHP82_MODS}, ${PHP83_MODS}, ${PHP84_MODS}" | sed_command 's/,/\n/g' | sed_command -e 's/^\s*//g' -e 's/\s*$//g' | sort -uf )" -MODS_RAW="${PHP74_MODS},${PHP80_MODS},${PHP81_MODS},${PHP82_MODS},${PHP83_MODS},${PHP84_MODS}" +#MODS="$( echo "${PHP74_MODS}, ${PHP80_MODS}, ${PHP81_MODS}, ${PHP82_MODS}, ${PHP83_MODS}, ${PHP84_MODS}, ${PHP85_MODS}" | sed_command 's/,/\n/g' | sed_command -e 's/^\s*//g' -e 's/\s*$//g' | sort -uf )" +MODS_RAW="${PHP74_MODS},${PHP80_MODS},${PHP81_MODS},${PHP82_MODS},${PHP83_MODS},${PHP84_MODS},${PHP85_MODS}" MODS="$(echo "$MODS_RAW" | tr ',' '\n' | grep -v '^$' | sort -uf)" @@ -94,8 +96,8 @@ E="🗸" # Enabled mods modules (can be disabled) D="d" # Disabled modules (can be enabled) U=" " # Unavailable -echo "| Modules | PHP 7.4 | PHP 8.0 | PHP 8.1 | PHP 8.2 | PHP 8.3 | PHP 8.4 |" -echo "|-------------------------------|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|" +echo "| Modules | PHP 7.4 | PHP 8.0 | PHP 8.1 | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |" +echo "|-------------------------------|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|" echo "${MODS}" | while read -r line; do # Ignore modules if [ "${line}" = "Core" ]; then @@ -195,5 +197,20 @@ echo "${MODS}" | while read -r line; do printf " %s |" "${U}" # Not available fi + # ---------- PHP 8.5 ----------# + if echo ",${PHP85_MODS}," | grep -Eq ",${line},"; then + if echo "${DISABLED}" | grep -Eq ",${line},"; then + printf " %s |" "${D}" # Currently disabled + else + if echo ",${PHP85_BASE}," | grep -Eq ",${line},"; then + printf " %s |" "${B}" # Enabled, but cannot be disabled + else + printf " %s |" "${E}" # Enabled, can be disabled + fi + fi + else + printf " %s |" "${U}" # Not available + fi + printf "\\n" done diff --git a/.tests/tests/framework-cakephp-php8.sh b/.tests/tests/framework-cakephp-php8.sh index 6951f5b0e..66ecfa38b 100755 --- a/.tests/tests/framework-cakephp-php8.sh +++ b/.tests/tests/framework-cakephp-php8.sh @@ -14,7 +14,7 @@ DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )" RETRIES=10 # see framework-cakephp.sh for PHP <8 tests -DISABLED_VERSIONS=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.4") +DISABLED_VERSIONS=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.4" "8.5") PHP_VERSION="$( get_php_version "${DVLBOX_PATH}" )" diff --git a/.tests/tests/framework-cakephp.sh b/.tests/tests/framework-cakephp.sh index f8a451640..ef5eb8287 100755 --- a/.tests/tests/framework-cakephp.sh +++ b/.tests/tests/framework-cakephp.sh @@ -14,7 +14,7 @@ DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )" RETRIES=10 # see framework-cakephp-php8.sh for PHP 8+ tests -DISABLED_VERSIONS=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2" "8.3" "8.4") +DISABLED_VERSIONS=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2" "8.3" "8.4" "8.5") PHP_VERSION="$( get_php_version "${DVLBOX_PATH}" )" diff --git a/.tests/tests/framework-drupal.sh b/.tests/tests/framework-drupal.sh index 363cfdab2..a63c6bcc8 100755 --- a/.tests/tests/framework-drupal.sh +++ b/.tests/tests/framework-drupal.sh @@ -13,7 +13,7 @@ DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )" . "${SCRIPT_PATH}/../scripts/.lib.sh" RETRIES=10 -DISABLED_VERSIONS=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2" "8.3" "8.4") +DISABLED_VERSIONS=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2" "8.3" "8.4" "8.5") DISABLED_MYSQL_VERSIONS=("mysql-8.0" "percona-8.0") diff --git a/CHANGELOG.md b/CHANGELOG.md index 09e6a82cf..3fca214ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ Make sure to have a look at [UPDATING.md](https://github.com/cytopia/devilbox/bl ## Unreleased +### Added +- Added PHP 8.5 + +### Changed +- Updated php-fpm images to `0.161` (PHP 8.4.27 / 8.5.12; PHP 8.1+ on Debian bookworm, 7.4/8.0 on bullseye) +- `dvl up` without `DEVILBOX_CONTAINERS` now starts the full default list (adds `php84` and `php85`); re-sync `docker-compose.override.yml` (`dvl update`) or set `DEVILBOX_CONTAINERS` + +### Fixed +- `.gitignore` ignored `cfg/php-ini-8.4/*.conf` instead of `cfg/php-fpm-8.4/*.conf` + ## Release v3.0.1 (2025-07-17) diff --git a/README.md b/README.md index 2d2d52934..1197c244d 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ All created projects (frontend or backend) will be able to communicate with one

**Available Architectures:** `amd64`, `arm64`
-**Available PHP Versions:** `7.4`, `8.0`, `8.1`, `8.2`, `8.3`, `8.4`
+**Available PHP Versions:** `7.4`, `8.0`, `8.1`, `8.2`, `8.3`, `8.4`, `8.5`
**Deprecated PHP Version:** `5.6`, `7.0`, `7.1`, `7.2`, `7.3` only available in `0.153` and previous @@ -726,6 +726,30 @@ Every single attachable container comes with many different versions. In order t + + + + 8.4 + + + + + + + + + + + + 8.5 + + + + + + + + diff --git a/cfg/php-fpm-8.5/.keepme b/cfg/php-fpm-8.5/.keepme new file mode 100644 index 000000000..e69de29bb diff --git a/cfg/php-fpm-8.5/README.md b/cfg/php-fpm-8.5/README.md new file mode 100644 index 000000000..6b8128090 --- /dev/null +++ b/cfg/php-fpm-8.5/README.md @@ -0,0 +1,54 @@ +# PHP-FPM 8.5 config directory + +## General + +* Add you custom php-fpm.conf files into this directory. +* Only files ending by `.conf` will be enabled +* Only files ending by `.conf` are ignored by git + + +## Example files + +This directory also holds three example files: + +| File | Description | +|---------------------------------|---------------------------------------------| +| `devilbox-fpm.conf-default` | Represents current PHP-FPM default settings | +| `devilbox-fpm.conf-pm_dynamic` | Example settings for dynamic workers | +| `devilbox-fpm.conf-pm_ondemand` | Example settings for ondemand workers | + +* Do not edit these example files! +* Copy them to a new file (in case you want to use them) + + +## Worker configuration + +When changing worker processes or scheduler, the following commands will come in handy +to monitor number of processes and memory consumption. + +```bash +# Show current PHP-FPM child memory consumption in MB +ps -ylC php-fpm --sort:rss | awk '!/RSS/ { s+=$8 } END { printf "%dM\n", s/1024 }' + +# (repeatedly) show current PHP-FPM child memory consumption in MB +watch --interval=1 "ps -ylC php-fpm --sort:rss | awk '"'!'"/RSS/ { s+=\$8 } END { printf \"%dM\n\", s/1024 }'" + +# (repeatedly) Current number of PHP-FPM childs +watch --interval=1 "ps auxw | grep -E 'php-(cgi|fpm)' | grep -vE 'grep|master' | wc -l" +``` + + +## Overwriting + +If multiple `.conf` files are present in this directory specifying different values for the +same settings, the last file (alphabetically by filename) will overwrite any previous values. + + +## Compatibility + +**Note:** + +PHP-FPM 5.2 uses XML-style configuration and does not allow includes. +If you want to change php-fpm.conf for PHP-FPM 5.2 you need to adjust the main configuration file. + +See `php-fpm-5.2/` directory. diff --git a/cfg/php-fpm-8.5/devilbox-fpm.conf-default b/cfg/php-fpm-8.5/devilbox-fpm.conf-default new file mode 100644 index 000000000..37e1f8ed5 --- /dev/null +++ b/cfg/php-fpm-8.5/devilbox-fpm.conf-default @@ -0,0 +1,80 @@ +; ############################################################ +; Devilbox php-fpm.conf: Current default settings +; ############################################################ +; +; Information +; ----------- +; * Do not edit this file (it belongs to git) +; * This file shows example settings that are currently effective +; * If this file is enabled, nothing will change as it reflects the current default settings +; +; How to enable? +; -------------- +; * Copy this file to another file with ".conf" extension +; * Only files with ".conf" extensions will be applied by PHP-FPM + + +; ### +; ### PHP-FPM global settings +; ### +; +[global] + +; Error log level. Possible values: alert, error, warning, notice, debug. Default value: notice. +log_level = notice + + + +; ### +; ### Pool configuratoin +; ### + +[www] + +; The timeout for serving a single request after which the worker process will be killed. +; This option should be used when the 'max_execution_time' ini option does not stop script +; execution for some reason. +request_terminate_timeout = 120s + + +; A maximum of backlog incoming connections will be queued for processing. +; If a connection request arrives with the queue full the client may receive an error with an +; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission, +; the request may be ignored so that retries may succeed. +; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections +; are silently truncated +listen.backlog = 1024 + + +; static - the number of child processes is fixed (pm.max_children). +; +; dynamic - the number of child processes is set dynamically based on the following directives: +; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers. +; +; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where +; pm.start_servers are started when the service is started. +pm = ondemand + +; The maximum number of child processes to be created +pm.max_children = 50 + +; The number of child processes created on startup. Used only when pm is set to dynamic. +; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2. +pm.start_servers = 4 + +; The desired minimum number of idle server processes. +pm.min_spare_servers = 2 + +; The desired maximum number of idle server processes. +pm.max_spare_servers = 6 + +; The number of requests each child process should execute before respawning. +; This can be useful to work around memory leaks in 3rd party libraries. +; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. +; Default value: 0. +pm.max_requests = 500 + +; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand +pm.process_idle_timeout = 10s + +; vim: set ft=dosini: diff --git a/cfg/php-fpm-8.5/devilbox-fpm.conf-pm_dynamic b/cfg/php-fpm-8.5/devilbox-fpm.conf-pm_dynamic new file mode 100644 index 000000000..59ec044b9 --- /dev/null +++ b/cfg/php-fpm-8.5/devilbox-fpm.conf-pm_dynamic @@ -0,0 +1,46 @@ +; ############################################################ +; # Devilbox php-fpm.conf: dynamic example +; ############################################################ +; +; Information +; ----------- +; * Do not edit this file (it belongs to git) +; * This file show a possible dynamic example configuration +; * If this file is enabled, it will overwrite the current worker settings +; +; How to enable? +; -------------- +; * Copy this file to another file with ".conf" extension +; * Only files with ".conf" extensions will be applied by PHP-FPM + + +; ### +; ### Pool configuratoin +; ### + +[www] + +; dynamic - the number of child processes is set dynamically based on the following directives: +pm = dynamic + +; The maximum number of child processes to be created +pm.max_children = 50 + +; The number of child processes created on startup. Used only when pm is set to dynamic. +; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2. +pm.start_servers = 4 + +; The desired minimum number of idle server processes. +pm.min_spare_servers = 2 + +; The desired maximum number of idle server processes. +pm.max_spare_servers = 6 + +; The number of requests each child process should execute before respawning. +; This can be useful to work around memory leaks in 3rd party libraries. +; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. +; Default value: 0. +pm.max_requests = 500 + + +; vim: set ft=dosini: diff --git a/cfg/php-fpm-8.5/devilbox-fpm.conf-pm_ondemand b/cfg/php-fpm-8.5/devilbox-fpm.conf-pm_ondemand new file mode 100644 index 000000000..84cd3ca72 --- /dev/null +++ b/cfg/php-fpm-8.5/devilbox-fpm.conf-pm_ondemand @@ -0,0 +1,39 @@ +; ############################################################ +; # Devilbox php-fpm.conf: ondemand example +; ############################################################ +; +; Information +; ----------- +; * Do not edit this file (it belongs to git) +; * This file show a possible ondemand example configuration +; * If this file is enabled, it will overwrite the current worker settings +; +; How to enable? +; -------------- +; * Copy this file to another file with ".conf" extension +; * Only files with ".conf" extensions will be applied by PHP-FPM + + +; ### +; ### Pool configuratoin +; ### + +[www] + +; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where +; pm.start_servers are started when the service is started. +pm = ondemand + +; The maximum number of child processes to be created +pm.max_children = 50 + +; The number of requests each child process should execute before respawning. +; This can be useful to work around memory leaks in 3rd party libraries. +; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. +; Default value: 0. +pm.max_requests = 500 + +; The number of seconds after which an idle process will be killed. +pm.process_idle_timeout = 10s + +; vim: set ft=dosini: diff --git a/cfg/php-ini-8.5/.keepme b/cfg/php-ini-8.5/.keepme new file mode 100644 index 000000000..e69de29bb diff --git a/cfg/php-ini-8.5/README.md b/cfg/php-ini-8.5/README.md new file mode 100644 index 000000000..c686e13ea --- /dev/null +++ b/cfg/php-ini-8.5/README.md @@ -0,0 +1,26 @@ +# PHP 8.5 ini directory + +## General + +* Add you custom php.ini files into this directory. +* Only files ending by `.ini` will be enabled +* Only files ending by `.ini` are ignored by git + + +## Example files + +This directory also holds two example files: + +| File | Description | +|----------------------------|-----------------------------------------| +| `devilbox-php.ini-default` | Represents current PHP default settings | +| `devilbox-php.ini-xdebug ` | Example settings for Xdebug | + +* Do not edit these example files! +* Copy them to a new file (in case you want to use them) + + +## Overwriting + +If multiple `.ini` files are present in this directory specifying different values for the +same settings, the last file (alphabetically by filename) will overwrite any previous values. diff --git a/cfg/php-ini-8.5/devilbox-php.ini-default b/cfg/php-ini-8.5/devilbox-php.ini-default new file mode 100644 index 000000000..83d037120 --- /dev/null +++ b/cfg/php-ini-8.5/devilbox-php.ini-default @@ -0,0 +1,63 @@ +; ############################################################ +; # Devilbox php.ini: Current default settings +; ############################################################ +; +; Information +; ----------- +; * Do not edit this file (it belongs to git) +; * This file shows example settings that are currently effective +; * If this file is enabled, nothing will change as it reflects the current default settings +; +; How to enable? +; -------------- +; * Copy this file to another file with ".ini" extension +; * Only files with ".ini" extensions will be applied by PHP + + + +; +; PHP.ini configuration +; +[PHP] + +; Memory +; Note: "memory_limit" should be larger than "post_max_size" +memory_limit = 512M + + +; Timeouts +max_execution_time = 120 +max_input_time = 120 + + +; Uploads +; Note: "post_max_size" should be greater than "upload_max_filesize" +post_max_size = 72M +upload_max_filesize = 64M +max_file_uploads = 20 + + +; Vars +variables_order = EGPCS +max_input_vars = 8000 +max_input_nesting_level = 64 + + +; Error reporting +; Note: error_log is dynamic and handled during start to set appropriate setting +error_reporting = E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED +xmlrpc_errors = Off +report_memleaks = On +display_errors = On +display_startup_errors = On +log_errors = On +html_errors = On + + +; Xdebug settings +xdebug.default_enable = Off +xdebug.profiler_enable = Off +xdebug.remote_enable = Off +xdebug.remote_autostart = Off + +; vim: set ft=dosini: diff --git a/cfg/php-ini-8.5/devilbox-php.ini-mailhog b/cfg/php-ini-8.5/devilbox-php.ini-mailhog new file mode 100644 index 000000000..2ed99e535 --- /dev/null +++ b/cfg/php-ini-8.5/devilbox-php.ini-mailhog @@ -0,0 +1,22 @@ +; ############################################################ +; # Devilbox php.ini: MailHog example +; ############################################################ +; +; Information +; ----------- +; * Do not edit this file (it belongs to git) +; * This file show a possible Xdebug example configuration +; * If this file is enabled, it will overwrite the current Xdebug settings +; +; How to enable? +; -------------- +; * Copy this file to another file with ".ini" extension +; * Only files with ".ini" extensions will be applied by PHP + + + +; +; PHP.ini configuration +; +[PHP] +sendmail_path = '/usr/local/bin/mhsendmail --smtp-addr="mailhog:1025"' diff --git a/cfg/php-ini-8.5/devilbox-php.ini-mailpit b/cfg/php-ini-8.5/devilbox-php.ini-mailpit new file mode 100644 index 000000000..d5e6a9464 --- /dev/null +++ b/cfg/php-ini-8.5/devilbox-php.ini-mailpit @@ -0,0 +1,22 @@ +; ############################################################ +; # Devilbox php.ini: MailPit example +; ############################################################ +; +; Information +; ----------- +; * Do not edit this file (it belongs to git) +; * This file show a possible Xdebug example configuration +; * If this file is enabled, it will overwrite the current Xdebug settings +; +; How to enable? +; -------------- +; * Copy this file to another file with ".ini" extension +; * Only files with ".ini" extensions will be applied by PHP + + + +; +; PHP.ini configuration +; +[PHP] +sendmail_path = "/usr/sbin/sendmail -S mailpit:1025 -t" diff --git a/cfg/php-ini-8.5/devilbox-php.ini-msmtp b/cfg/php-ini-8.5/devilbox-php.ini-msmtp new file mode 100644 index 000000000..58f4fc1b1 --- /dev/null +++ b/cfg/php-ini-8.5/devilbox-php.ini-msmtp @@ -0,0 +1,22 @@ +; ############################################################ +; # Devilbox php.ini: msmtp example +; ############################################################ +; +; Information +; ----------- +; * Do not edit this file (it belongs to git) +; * This file show a possible Xdebug example configuration +; * If this file is enabled, it will overwrite the current Xdebug settings +; +; How to enable? +; -------------- +; * Copy this file to another file with ".ini" extension +; * Only files with ".ini" extensions will be applied by PHP + + + +; +; PHP.ini configuration +; +[smtp] +sendmail_path = '/usr/local/bin/msmtp -t' diff --git a/cfg/php-ini-8.5/devilbox-php.ini-performance b/cfg/php-ini-8.5/devilbox-php.ini-performance new file mode 100644 index 000000000..b465fff85 --- /dev/null +++ b/cfg/php-ini-8.5/devilbox-php.ini-performance @@ -0,0 +1,51 @@ +; Max execution time per request +max_execution_time = 300 + +; Max memory per instance +memory_limit = 4G + +;The maximum size of an uploaded file. +upload_max_filesize = 128M + +; Increase max input variables value +max_input_vars = 10000000 + +;Sets max size of post data allowed. This setting also affects file upload. +;To upload large files, this value must be larger than upload_max_filesize +post_max_size = 128M + +session.auto_start = off +session.gc_probability = 0 +suhosin.session.cryptua = off + +; Disable garbage collector +zend.enable_gc = off + +[opcache] +opcache.enable = 1 +opcache.enable_cli = 1 +opcache.memory_consumption = 2048 +opcache.interned_strings_buffer = 20 +opcache.file_cache = /tmp +opcache.max_accelerated_files = 80000 +opcache.max_wasted_percentage = 5 +opcache.use_cwd = 1 +opcache.validate_timestamps = 1 +opcache.revalidate_freq = 0 +opcache.file_update_protection = 2 +opcache.revalidate_path = 0 +opcache.save_comments = 1 +opcache.load_comments = 1 +opcache.fast_shutdown = 1 +opcache.enable_file_override = 0 +opcache.optimization_level = 0xffffffff +opcache.inherited_hack = 1 +opcache.blacklist_filename = "" +opcache.max_file_size = 0 +opcache.consistency_checks = 0 +opcache.force_restart_timeout = 180 +opcache.error_log = "" +opcache.log_verbosity_level = 1 +opcache.preferred_memory_model = "" +opcache.protect_memory = 0 +apc.cache_by_default = false diff --git a/cfg/php-ini-8.5/devilbox-php.ini-xdebug b/cfg/php-ini-8.5/devilbox-php.ini-xdebug new file mode 100644 index 000000000..2608fedc5 --- /dev/null +++ b/cfg/php-ini-8.5/devilbox-php.ini-xdebug @@ -0,0 +1,54 @@ +; ############################################################ +; # Devilbox php.ini: Xdebug example +; ############################################################ +; +; Information +; ----------- +; * Do not edit this file (it belongs to git) +; * This file show a possible Xdebug example configuration +; * If this file is enabled, it will overwrite the current Xdebug settings +; +; How to enable? +; -------------- +; * Copy this file to another file with ".ini" extension +; * Only files with ".ini" extensions will be applied by PHP + + + +; +; PHP.ini configuration +; +[PHP] + +; Xdebug (version 3.x.x - latest) +; Upgrade Guide: https://3.xdebug.org/docs/upgrade_guide +; Settings Guide: https://xdebug.org/docs/all_settings +; +; Use these settings to enable Xdebug for PHP +; Make sure to read up on Xdebug some settings might significantly slow down requests. +; The following is just an example configuration and should be adjusted. +; +; In order to use Xdebug in macOS, make sure to configure as per following article: +; https://devilbox.readthedocs.io/en/latest/howto/xdebug/host-address-alias-an-mac.html#howto-host-address-alias-on-mac + +; Defaults +xdebug.mode = debug +;xdebug.remote_handler = dbgp +xdebug.start_with_request = yes +;xdebug.start_with_request = trigger +;xdebug.trigger_value = randomkey + +; How to connect +xdebug.client_port = 9000 +xdebug.client_host = 10.254.254.254 +xdebug.discover_client_host = 0 + +; Logging +xdebug.log = /var/log/php/xdebug.log +xdebug.log_level = 7 + +; IDE Configuration +xdebug.idekey = PHPSTORM +;xdebug.idekey = VSCODE + +; vim: set ft=dosini: diff --git a/cfg/php-startup-8.5/.keepme b/cfg/php-startup-8.5/.keepme new file mode 100644 index 000000000..e69de29bb diff --git a/cfg/php-startup-8.5/01-update-apt-index.sh-example b/cfg/php-startup-8.5/01-update-apt-index.sh-example new file mode 100755 index 000000000..d324ef890 --- /dev/null +++ b/cfg/php-startup-8.5/01-update-apt-index.sh-example @@ -0,0 +1,6 @@ +#!/bin/bash +# +# Simple example showing how to update the packet index +# + +DEBIAN_FRONTEND=noninteractive apt-get update -q diff --git a/cfg/php-startup-8.5/README.md b/cfg/php-startup-8.5/README.md new file mode 100644 index 000000000..2b65da2f6 --- /dev/null +++ b/cfg/php-startup-8.5/README.md @@ -0,0 +1,29 @@ +# Custom startup scripts (for PHP 8.5 only) + +Any script inside this directory ending by `.sh` will be executed during the PHP container startup. +This is useful to apply your custom settings such as installing software that usually requires +the user to accept a license or similar. + +A few examples are given that do not end by `.sh` which won't be run. If you want to use the +provided examples, copy them to a file ending by `.sh` + + +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands only for a specific PHP version. If you want to run commands +for all versions , go to `autostart/` in the root of the Devilbox git directory. + + +## Important + +All provided scripts will be executed with **root** permissions. diff --git a/compose/docker-compose.override.yml-magento2 b/compose/docker-compose.override.yml-magento2 index 1840d8f3b..61508b3ed 100644 --- a/compose/docker-compose.override.yml-magento2 +++ b/compose/docker-compose.override.yml-magento2 @@ -124,7 +124,7 @@ services: php74: <<: *default-php - image: devilboxcommunity/php-fpm:7.4-slim-0.160 + image: devilboxcommunity/php-fpm:7.4-slim-0.161 hostname: php74 networks: app_net: @@ -151,7 +151,7 @@ services: php80: <<: *default-php - image: devilboxcommunity/php-fpm:8.0-slim-0.160 + image: devilboxcommunity/php-fpm:8.0-slim-0.161 hostname: php80 networks: app_net: @@ -178,7 +178,7 @@ services: php81: <<: *default-php - image: devilboxcommunity/php-fpm:8.1-slim-0.160 + image: devilboxcommunity/php-fpm:8.1-slim-0.161 hostname: php81 networks: app_net: @@ -205,7 +205,7 @@ services: php82: <<: *default-php - image: devilboxcommunity/php-fpm:8.2-slim-0.160 + image: devilboxcommunity/php-fpm:8.2-slim-0.161 hostname: php82 networks: app_net: @@ -232,7 +232,7 @@ services: php83: <<: *default-php - image: devilboxcommunity/php-fpm:8.3-slim-0.160 + image: devilboxcommunity/php-fpm:8.3-slim-0.161 hostname: php83 networks: app_net: @@ -259,7 +259,7 @@ services: php84: <<: *default-php - image: devilboxcommunity/php-fpm:8.4-slim-0.160 + image: devilboxcommunity/php-fpm:8.4-slim-0.161 hostname: php84 networks: app_net: @@ -284,6 +284,33 @@ services: # Users SSH directory (read-only) - ${HOST_PATH_SSH_DIR}:/home/devilbox/.ssh:ro${MOUNT_OPTIONS} + php85: + <<: *default-php + image: devilboxcommunity/php-fpm:8.5-slim-0.161 + hostname: php85 + networks: + app_net: + ipv4_address: 172.16.238.214 + volumes: + # Specific volumes + - ${DEVILBOX_PATH}/cfg/php-ini-8.5:/etc/php-custom.d:ro${MOUNT_OPTIONS} + - ${DEVILBOX_PATH}/cfg/php-fpm-8.5:/etc/php-fpm-custom.d:ro${MOUNT_OPTIONS} + - ${DEVILBOX_PATH}/cfg/php-startup-8.5:/startup.1.d:rw${MOUNT_OPTIONS} + # Generic volumes + - ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd:rw${MOUNT_OPTIONS} + - ${HOST_PATH_BACKUPDIR}:/shared/backups:rw${MOUNT_OPTIONS} + - ${DEVILBOX_PATH}/supervisor:/etc/supervisor/custom.d:rw${MOUNT_OPTIONS} + - ${DEVILBOX_PATH}/bash:/etc/bashrc-devilbox.d:rw${MOUNT_OPTIONS} + # - ${DEVILBOX_PATH}/cfg/msmtp/msmtprc:/etc/msmtprc:ro${MOUNT_OPTIONS} + - ${DEVILBOX_PATH}/autostart:/startup.2.d:rw${MOUNT_OPTIONS} + - ${DEVILBOX_PATH}/cfg/php-startup-8.5:/startup.1.d:rw${MOUNT_OPTIONS} + - devilbox-mail:/var/mail:rw${MOUNT_OPTIONS} + - ${DEVILBOX_PATH}/supervisor:/etc/supervisor/custom.d:rw${MOUNT_OPTIONS} + # Certificate Authority public key + - ${DEVILBOX_PATH}/ca:/ca:rw${MOUNT_OPTIONS} + # Users SSH directory (read-only) + - ${HOST_PATH_SSH_DIR}:/home/devilbox/.ssh:ro${MOUNT_OPTIONS} + # ------------------------------------------------------------ # MySQL Database # ------------------------------------------------------------ diff --git a/docker-compose.yml b/docker-compose.yml index 73be1445e..8cbf2262d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -104,7 +104,7 @@ services: # PHP # ------------------------------------------------------------ php: - image: devilboxcommunity/php-fpm:${PHP_SERVER}-work-0.160 + image: devilboxcommunity/php-fpm:${PHP_SERVER}-work-0.161 hostname: php ## diff --git a/docs/src/content/docs/advanced/add-your-own-docker-image.md b/docs/src/content/docs/advanced/add-your-own-docker-image.md index 44cc52b66..dc659c7c9 100644 --- a/docs/src/content/docs/advanced/add-your-own-docker-image.md +++ b/docs/src/content/docs/advanced/add-your-own-docker-image.md @@ -170,7 +170,7 @@ share with a team. ```dotenv CONTAINERS_CONFIG_DEFAULT="bind httpd php mysql" -CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 redis opensearch buggregator" +CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 php85 redis opensearch buggregator" ``` The installer reads those values to export `DEVILBOX_CONTAINERS` into diff --git a/docs/src/content/docs/configuration-files/env-file.md b/docs/src/content/docs/configuration-files/env-file.md index 90aa031af..8ec36d4f2 100644 --- a/docs/src/content/docs/configuration-files/env-file.md +++ b/docs/src/content/docs/configuration-files/env-file.md @@ -45,8 +45,8 @@ Always-provisioned containers read by `install.sh`; default lean stack for DNS, ### CONTAINERS_CONFIG_OPTIONAL Optional containers appended by `install.sh` to preserve the broader roster for new clones. - Type: `string list` -- Default: `"php74 php81 php82 php83 php84 redis opensearch buggregator"` -- Example: `CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 redis opensearch buggregator"` +- Default: `"php74 php81 php82 php83 php84 php85 redis opensearch buggregator"` +- Example: `CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 php85 redis opensearch buggregator"` - Notes: Remove names before install when you do not want those containers exported. ## Core settings diff --git a/docs/src/content/docs/custom-container/enable-all-container.md b/docs/src/content/docs/custom-container/enable-all-container.md index 3ab3bb40b..6bbe8565e 100644 --- a/docs/src/content/docs/custom-container/enable-all-container.md +++ b/docs/src/content/docs/custom-container/enable-all-container.md @@ -84,6 +84,7 @@ agentic optional roster: - `php82` - `php83` - `php84` +- `php85` - `redis` - `opensearch` - `buggregator` diff --git a/docs/src/content/docs/getting-started/agentic-tools-toggle.md b/docs/src/content/docs/getting-started/agentic-tools-toggle.md index 2010d6647..9919ba7f6 100644 --- a/docs/src/content/docs/getting-started/agentic-tools-toggle.md +++ b/docs/src/content/docs/getting-started/agentic-tools-toggle.md @@ -55,7 +55,7 @@ active. For example, `env-example` defines: ```dotenv CONTAINERS_CONFIG_DEFAULT="bind httpd php mysql" -CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 redis opensearch buggregator" +CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 php85 redis opensearch buggregator" ``` Agentic tools follow the same principle: diff --git a/docs/src/content/docs/getting-started/change-container-versions.md b/docs/src/content/docs/getting-started/change-container-versions.md index 389e0acac..7ee3fc817 100644 --- a/docs/src/content/docs/getting-started/change-container-versions.md +++ b/docs/src/content/docs/getting-started/change-container-versions.md @@ -66,8 +66,9 @@ The default PHP service uses `PHP_SERVER`. The current selectable values are: | `8.2` | available | | `8.3` | available | | `8.4` | available | +| `8.5` | available | -Example: switch the default PHP service to 8.4. +Example: switch the default PHP service to 8.5. ```bash dvl down @@ -81,7 +82,8 @@ Edit `.env` so only one `PHP_SERVER` assignment is active: #PHP_SERVER=8.1 #PHP_SERVER=8.2 #PHP_SERVER=8.3 -PHP_SERVER=8.4 +#PHP_SERVER=8.4 +PHP_SERVER=8.5 ``` Start again: @@ -92,7 +94,7 @@ dvl exec "php -v" ``` :::tip -If your installation includes versioned PHP services such as `php74`, `php81`, `php82`, `php83`, and `php84`, use `dvl shell php84` to enter a specific version without changing the default `php` service. +If your installation includes versioned PHP services such as `php74`, `php81`, `php82`, `php83`, `php84`, and `php85`, use `dvl shell php85` to enter a specific version without changing the default `php` service. ::: ## HTTPD versions diff --git a/docs/src/content/docs/getting-started/enter-the-php-container.md b/docs/src/content/docs/getting-started/enter-the-php-container.md index dcaa35511..2f87aba18 100644 --- a/docs/src/content/docs/getting-started/enter-the-php-container.md +++ b/docs/src/content/docs/getting-started/enter-the-php-container.md @@ -38,6 +38,7 @@ The current default installation can include versioned PHP service names: | `php82` | PHP 8.2 service. | | `php83` | PHP 8.3 service. | | `php84` | PHP 8.4 service. | +| `php85` | PHP 8.5 service. | Enter a specific service with: diff --git a/docs/src/content/docs/getting-started/install-script.mdx b/docs/src/content/docs/getting-started/install-script.mdx index 1d257b4d9..3aab3c5b2 100644 --- a/docs/src/content/docs/getting-started/install-script.mdx +++ b/docs/src/content/docs/getting-started/install-script.mdx @@ -32,8 +32,8 @@ The installer provides semantic feedback using standard ANSI color codes. If `tp When running with `--verbose`, you will see additional internal state tracking: ```bash [VERBOSE] Removing existing directory: /Users/user/Workspace/devilbox -[VERBOSE] Default : bind httpd php php74 php81 php82 php83 php84 -[VERBOSE] Optional: mysql redis opensearch buggregator +[VERBOSE] Default : bind httpd php mysql +[VERBOSE] Optional: php74 php81 php82 php83 php84 php85 redis opensearch buggregator [VERBOSE] Using shell profile: /Users/user/.zprofile ``` @@ -225,7 +225,7 @@ If you prefer not to use the automated script, you can perform the installation Add the following to your `~/.zshrc` or `~/.bashrc`: ```bash export DEVILBOX_PATH="$HOME/Workspace/devilbox" - export DEVILBOX_CONTAINERS="bind httpd php php74 php81 php82 php83 php84 mysql redis opensearch buggregator" + export DEVILBOX_CONTAINERS="bind httpd php php74 php81 php82 php83 php84 php85 mysql redis opensearch buggregator" ``` 5. **Create a global alias or symlink**: diff --git a/docs/src/content/docs/getting-started/install-the-devilbox.md b/docs/src/content/docs/getting-started/install-the-devilbox.md index 68e440db3..2ee83cca4 100644 --- a/docs/src/content/docs/getting-started/install-the-devilbox.md +++ b/docs/src/content/docs/getting-started/install-the-devilbox.md @@ -108,7 +108,7 @@ The installer adds Devilbox configuration to the profile for your detected shell The profile receives values like these: ```bash -export DEVILBOX_CONTAINERS="bind httpd php mysql php74 php81 php82 php83 php84 redis opensearch buggregator" +export DEVILBOX_CONTAINERS="bind httpd php mysql php74 php81 php82 php83 php84 php85 redis opensearch buggregator" export DEVILBOX_PATH="$HOME/Workspace/devilbox" ``` @@ -126,7 +126,7 @@ The installer reads the default and optional rosters from `env-example`: ```bash CONTAINERS_CONFIG_DEFAULT="bind httpd php mysql" -CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 redis opensearch buggregator" +CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 php85 redis opensearch buggregator" ``` It combines those values and exports them as `DEVILBOX_CONTAINERS`. That is the list started by `dvl up` when you do not pass explicit services. @@ -227,7 +227,7 @@ Add shell profile exports: ```bash export DEVILBOX_PATH="$HOME/Workspace/devilbox" -export DEVILBOX_CONTAINERS="bind httpd php mysql php74 php81 php82 php83 php84 redis opensearch buggregator" +export DEVILBOX_CONTAINERS="bind httpd php mysql php74 php81 php82 php83 php84 php85 redis opensearch buggregator" ``` Create a symlink or alias for `dvl`: diff --git a/docs/src/content/docs/getting-started/prerequisites.md b/docs/src/content/docs/getting-started/prerequisites.md index 6a078c3d6..e3738260c 100644 --- a/docs/src/content/docs/getting-started/prerequisites.md +++ b/docs/src/content/docs/getting-started/prerequisites.md @@ -152,7 +152,7 @@ printf '%s\n' "$PATH" | Variable | Example value | Purpose | | --- | --- | --- | | `DEVILBOX_PATH` | `$HOME/Workspace/devilbox` | Tells `dvl` where the Devilbox repository lives. | -| `DEVILBOX_CONTAINERS` | `bind httpd php mysql php74 php81 php82 php83 php84 redis opensearch buggregator` | Defines the services started by `dvl up`. | +| `DEVILBOX_CONTAINERS` | `bind httpd php mysql php74 php81 php82 php83 php84 php85 redis opensearch buggregator` | Defines the services started by `dvl up`. | The installer chooses a profile based on your shell: diff --git a/docs/src/content/docs/getting-started/start-the-devilbox.md b/docs/src/content/docs/getting-started/start-the-devilbox.md index 9678f8b5f..e5696acd7 100644 --- a/docs/src/content/docs/getting-started/start-the-devilbox.md +++ b/docs/src/content/docs/getting-started/start-the-devilbox.md @@ -33,7 +33,7 @@ CONTAINERS_CONFIG_DEFAULT="bind httpd php mysql" The installer also appends the optional roster to preserve the broader legacy start set: ```bash -CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 redis opensearch buggregator" +CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 php85 redis opensearch buggregator" ``` Together, those values become `DEVILBOX_CONTAINERS` in your shell profile. `dvl up` starts that list when no services are passed. diff --git a/docs/src/content/docs/index.mdx b/docs/src/content/docs/index.mdx index a621c0d8e..71843a0f5 100644 --- a/docs/src/content/docs/index.mdx +++ b/docs/src/content/docs/index.mdx @@ -25,7 +25,7 @@ import { Card, CardGrid, LinkCard } from '@astrojs/starlight/components'; ## What you get - PHP 7.4, 8.1, 8.2, 8.3, 8.4 side-by-side. Switch with one env var. + PHP 7.4, 8.1, 8.2, 8.3, 8.4, 8.5 side-by-side. Switch with one env var. 12 AI coding agents — Claude Code, Codex, Copilot, Gemini, OpenCode, Qwen, and more — pre-installed and auto-discovered. diff --git a/docs/src/content/docs/intermediate/dvl-cli.mdx b/docs/src/content/docs/intermediate/dvl-cli.mdx index 447e8b878..4f2918020 100644 --- a/docs/src/content/docs/intermediate/dvl-cli.mdx +++ b/docs/src/content/docs/intermediate/dvl-cli.mdx @@ -29,7 +29,7 @@ Starts the designated Devilbox services in detached mode. - **Synopsis**: `dvl up [services...]` - **Behavior**: - If no services are specified, it starts the list defined in your `DEVILBOX_CONTAINERS` environment variable. - - If `DEVILBOX_CONTAINERS` is empty, it falls back to a default stack: `bind httpd php php74 php81 php82 php83 php84 mysql redis opensearch buggregator`. + - If `DEVILBOX_CONTAINERS` is empty, it falls back to a default stack: `bind httpd php php74 php81 php82 php83 php84 php85 mysql redis opensearch buggregator`. - **Exit Codes**: `0` on success, `1` if Docker fails. **Examples**: diff --git a/docs/src/content/docs/support/troubleshooting.md b/docs/src/content/docs/support/troubleshooting.md index 730c232aa..3617a00bf 100644 --- a/docs/src/content/docs/support/troubleshooting.md +++ b/docs/src/content/docs/support/troubleshooting.md @@ -99,8 +99,8 @@ grep '^PHP_SERVER=' .env grep '^CONTAINERS_CONFIG_' .env env-example ``` -Current PHP containers are `php74`, `php81`, `php82`, `php83`, and -`php84`. Remove obsolete custom service names from local overrides and +Current PHP containers are `php74`, `php81`, `php82`, `php83`, `php84`, +and `php85`. Remove obsolete custom service names from local overrides and `DEVILBOX_CONTAINERS`. Recreate PHP after changing image tags or mounts: diff --git a/dvl.sh b/dvl.sh index 7234d6c8e..0506d2b26 100755 --- a/dvl.sh +++ b/dvl.sh @@ -207,7 +207,7 @@ YQ_BINARY="$DEVILBOX_PATH/.tests/binaries/yq" # Read-only variables readonly VERSION="1.2.6" -readonly DEFAULT_DVL_CONTAINERS="bind httpd php php74 php81 php82 php83 php84 mysql redis opensearch buggregator" +readonly DEFAULT_DVL_CONTAINERS="bind httpd php php74 php81 php82 php83 php84 php85 mysql redis opensearch buggregator" function main { if [[ $# -eq 0 ]] ; then @@ -312,7 +312,7 @@ function __get_default_containers { if [[ ! -z "$DEVILBOX_CONTAINERS" ]]; then printf %s "${DEVILBOX_CONTAINERS}" else - printf %s "bind httpd php php74 php81 php82 php83 mysql redis opensearch buggregator" + printf %s "${DEFAULT_DVL_CONTAINERS}" fi } @@ -602,12 +602,12 @@ EOL local minor="${version_num:1:1}" local version="$major.$minor" echo "Using version $version derived from container name" >&2 - current_image="devilboxcommunity/php-fpm:$version-slim-0.155" + current_image="devilboxcommunity/php-fpm:$version-slim-0.161" else # Get default PHP version if container name doesn't contain version local default_php="$( "${SCRIPT_PATH}/env-getvar.sh" "PHP_SERVER" )" echo "Using default PHP version: $default_php" >&2 - current_image="devilboxcommunity/php-fpm:$default_php-slim-0.155" + current_image="devilboxcommunity/php-fpm:$default_php-slim-0.161" fi echo "Using derived image: $current_image" >&2 fi @@ -1628,7 +1628,7 @@ function InteractiveQuestions { 7.0|70|7.1|71|7.2|72|7.3|73|7.4|74) PHP_VERSION=$(awk '{gsub(/[.]/,"");print $NF}' <<< "php$response") ;; - 8.0|80|8.2|82|8.3|83|8.4|84) + 8.0|80|8.2|82|8.3|83|8.4|84|8.5|85) PHP_VERSION=$(awk '{gsub(/[.]/,"");print $NF}' <<< "php$response") ;; 8.1|81|*) diff --git a/env-example b/env-example index 52fc191c0..b42d49f9d 100644 --- a/env-example +++ b/env-example @@ -31,11 +31,11 @@ ### ### install.sh reads these to compute DEVILBOX_CONTAINERS exported ### to your shell profile. DEFAULT is always installed; OPTIONAL is -### appended to preserve the legacy 12-container roster. Edit here +### appended to preserve the legacy 13-container roster. Edit here ### to change what install.sh provisions for new clones. ### CONTAINERS_CONFIG_DEFAULT="bind httpd php mysql" -CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 redis opensearch buggregator" +CONTAINERS_CONFIG_OPTIONAL="php74 php81 php82 php83 php84 php85 redis opensearch buggregator" ### @@ -309,6 +309,7 @@ PHP_SERVER=8.1 #PHP_SERVER=8.2 #PHP_SERVER=8.3 #PHP_SERVER=8.4 +#PHP_SERVER=8.5 ### diff --git a/log/php-fpm-8.5/.keepme b/log/php-fpm-8.5/.keepme new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test-install-sh.sh b/tests/test-install-sh.sh index f7bd2f984..2c2735db9 100755 --- a/tests/test-install-sh.sh +++ b/tests/test-install-sh.sh @@ -102,8 +102,8 @@ assert_file_exists "${ENV_EXAMPLE}" "env-example exists" assert_grep_count '^CONTAINERS_CONFIG_DEFAULT=' "${ENV_EXAMPLE}" 1 "CONTAINERS_CONFIG_DEFAULT defined" assert_grep_count '^CONTAINERS_CONFIG_OPTIONAL=' "${ENV_EXAMPLE}" 1 "CONTAINERS_CONFIG_OPTIONAL defined" -# 3. Container roster parity (12 legacy tokens) -print_h_sub "3. Container roster parity (12 legacy tokens)" +# 3. Container roster parity (13 legacy tokens) +print_h_sub "3. Container roster parity (13 legacy tokens)" _default_line="$(grep -E '^CONTAINERS_CONFIG_DEFAULT=' "${ENV_EXAMPLE}" | head -n1)" _optional_line="$(grep -E '^CONTAINERS_CONFIG_OPTIONAL=' "${ENV_EXAMPLE}" | head -n1)" _default_val="${_default_line#CONTAINERS_CONFIG_DEFAULT=}" @@ -117,10 +117,10 @@ _optional_val="${_optional_val%\'}"; _optional_val="${_optional_val#\'}" _combined="${_default_val} ${_optional_val}" # tokenize on whitespace, sort unique _actual_sorted="$(printf '%s\n' ${_combined} | tr ' ' '\n' | sed '/^$/d' | sort -u | tr '\n' ' ')" -_expected_sorted="$(printf '%s\n' bind httpd php mysql php74 php81 php82 php83 php84 redis opensearch buggregator | sort -u | tr '\n' ' ')" +_expected_sorted="$(printf '%s\n' bind httpd php mysql php74 php81 php82 php83 php84 php85 redis opensearch buggregator | sort -u | tr '\n' ' ')" if [ "${_actual_sorted}" = "${_expected_sorted}" ]; then - pass "Container roster matches exactly (12 unique tokens)" + pass "Container roster matches exactly (13 unique tokens)" else fail "Container roster mismatch. expected: ${_expected_sorted}