From 12bb3bdb8eb8e941f2392a4571f2a53f44aa5ae7 Mon Sep 17 00:00:00 2001 From: Nick Chomey Date: Thu, 22 Jan 2026 17:03:48 -0600 Subject: [PATCH 1/5] fix xdebug and xhprof ini files - point to proper zts extension .so files --- web-build/Dockerfile.frankenphp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/web-build/Dockerfile.frankenphp b/web-build/Dockerfile.frankenphp index 5796611..c0633e9 100644 --- a/web-build/Dockerfile.frankenphp +++ b/web-build/Dockerfile.frankenphp @@ -20,6 +20,11 @@ cp /etc/php/${DDEV_PHP_VERSION}/mods-available/blackfire.ini /etc/php-zts/conf.d cp /etc/php/${DDEV_PHP_VERSION}/mods-available/xdebug.ini /etc/php-zts/conf.d/15-xdebug.ini cp /etc/php/${DDEV_PHP_VERSION}/mods-available/xhprof.ini /etc/php-zts/conf.d/20-xhprof.ini +# Fix extension .so paths for php-zts (they use versioned names like xdebug-zts-84) +PHP_ZTS_VERSION=$(echo $DDEV_PHP_VERSION | tr -d '.') +sed -i "s|zend_extension=xdebug.so|zend_extension=xdebug-zts-${PHP_ZTS_VERSION}|" /etc/php-zts/conf.d/15-xdebug.ini +sed -i "s|extension=xhprof.so|extension=xhprof-zts-${PHP_ZTS_VERSION}|" /etc/php-zts/conf.d/20-xhprof.ini + # Create symlinks for phpenmod and phpdismod to use php-zts versions ln -sf /usr/sbin/phpenmod-zts /usr/sbin/phpenmod ln -sf /usr/sbin/phpdismod-zts /usr/sbin/phpdismod From ee72226561a0ad04587ce2fc9b28faa1fd4d46c2 Mon Sep 17 00:00:00 2001 From: Stanislav Zhuk Date: Fri, 23 Jan 2026 12:10:09 +0200 Subject: [PATCH 2/5] testing more checks in tests for warnings --- tests/test.bats | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/tests/test.bats b/tests/test.bats index 024f695..13f1b21 100644 --- a/tests/test.bats +++ b/tests/test.bats @@ -52,6 +52,8 @@ health_checks() { assert_output --partial "PHP ${FRANKENPHP_PHP_VERSION}" refute_output --partial "Warning" refute_output --partial "is already loaded" + refute_output --partial "cannot open shared object file" + refute_output --partial "in Unknown on line" run ddev php --ini assert_success @@ -164,31 +166,28 @@ health_checks() { assert_line "zip" if [[ "${FRANKENPHP_CUSTOM_EXTENSION}" == "true" ]]; then - assert_output --partial "example_pie_extension" + assert_line "example_pie_extension" else - refute_output --partial "example_pie_extension" + refute_line "example_pie_extension" fi - run ddev xdebug on - assert_success - - run ddev php -m - assert_success - assert_output --partial "xdebug" - - run ddev xhprof on - assert_success - - run ddev php -m - assert_success - assert_output --partial "xhprof" + refute_output --partial "Warning" + refute_output --partial "is already loaded" + refute_output --partial "cannot open shared object file" + refute_output --partial "in Unknown on line" - run ddev blackfire on - assert_success + for extension in xdebug xhprof blackfire; do + run ddev "${extension}" on + assert_success - run ddev php -m - assert_success - assert_output --partial "blackfire" + run ddev php -m + assert_success + assert_line "${extension}" + refute_output --partial "Warning" + refute_output --partial "is already loaded" + refute_output --partial "cannot open shared object file" + refute_output --partial "in Unknown on line" + done } teardown() { From 4555e0d8de864cd4c57d8f9a297508f65297ef83 Mon Sep 17 00:00:00 2001 From: Stanislav Zhuk Date: Fri, 23 Jan 2026 12:02:42 +0200 Subject: [PATCH 3/5] temp revert --- web-build/Dockerfile.frankenphp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/web-build/Dockerfile.frankenphp b/web-build/Dockerfile.frankenphp index c0633e9..5796611 100644 --- a/web-build/Dockerfile.frankenphp +++ b/web-build/Dockerfile.frankenphp @@ -20,11 +20,6 @@ cp /etc/php/${DDEV_PHP_VERSION}/mods-available/blackfire.ini /etc/php-zts/conf.d cp /etc/php/${DDEV_PHP_VERSION}/mods-available/xdebug.ini /etc/php-zts/conf.d/15-xdebug.ini cp /etc/php/${DDEV_PHP_VERSION}/mods-available/xhprof.ini /etc/php-zts/conf.d/20-xhprof.ini -# Fix extension .so paths for php-zts (they use versioned names like xdebug-zts-84) -PHP_ZTS_VERSION=$(echo $DDEV_PHP_VERSION | tr -d '.') -sed -i "s|zend_extension=xdebug.so|zend_extension=xdebug-zts-${PHP_ZTS_VERSION}|" /etc/php-zts/conf.d/15-xdebug.ini -sed -i "s|extension=xhprof.so|extension=xhprof-zts-${PHP_ZTS_VERSION}|" /etc/php-zts/conf.d/20-xhprof.ini - # Create symlinks for phpenmod and phpdismod to use php-zts versions ln -sf /usr/sbin/phpenmod-zts /usr/sbin/phpenmod ln -sf /usr/sbin/phpdismod-zts /usr/sbin/phpdismod From 7ec070a686d6b9e630a8fa03b01b90d2cdad2550 Mon Sep 17 00:00:00 2001 From: Stanislav Zhuk Date: Fri, 23 Jan 2026 12:33:56 +0200 Subject: [PATCH 4/5] make it smart enough to handle priority without specifying it --- web-build/Dockerfile.frankenphp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/web-build/Dockerfile.frankenphp b/web-build/Dockerfile.frankenphp index 5796611..3347dc5 100644 --- a/web-build/Dockerfile.frankenphp +++ b/web-build/Dockerfile.frankenphp @@ -17,8 +17,26 @@ sed -i 's|/etc/php/${DDEV_PHP_VERSION}/fpm/conf.d/|/etc/php-zts/conf.d/|g' /star # Copy DDEV PHP module configurations to php-zts location cp /etc/php/${DDEV_PHP_VERSION}/mods-available/assert.ini /etc/php-zts/conf.d/20-assert.ini cp /etc/php/${DDEV_PHP_VERSION}/mods-available/blackfire.ini /etc/php-zts/conf.d/90-blackfire.ini -cp /etc/php/${DDEV_PHP_VERSION}/mods-available/xdebug.ini /etc/php-zts/conf.d/15-xdebug.ini -cp /etc/php/${DDEV_PHP_VERSION}/mods-available/xhprof.ini /etc/php-zts/conf.d/20-xhprof.ini + +# Append DDEV extension configurations to existing php-zts ini files +for EXT_NAME in xdebug xhprof; do + # Find the source extension ini file in mods-available + EXT_SRC_INI=$(find "/etc/php/${DDEV_PHP_VERSION}/mods-available" -name "*${EXT_NAME}*.ini" -type f | head -n 1) + if [ -z "$EXT_SRC_INI" ]; then + echo "ERROR: ${EXT_NAME} ini file not found in /etc/php/${DDEV_PHP_VERSION}/mods-available" >&2 + exit 1 + fi + + # Find the destination extension ini file in php-zts conf.d + EXT_ZTS_INI=$(find /etc/php-zts/conf.d -name "*${EXT_NAME}*.ini" -type f | head -n 1) + if [ -z "$EXT_ZTS_INI" ]; then + echo "ERROR: ${EXT_NAME} ini file not found in /etc/php-zts/conf.d" >&2 + exit 1 + fi + + # Append config from mods-available, excluding extension loading lines + grep -v -E '^(zend_)?extension=' "$EXT_SRC_INI" >> "$EXT_ZTS_INI" +done # Create symlinks for phpenmod and phpdismod to use php-zts versions ln -sf /usr/sbin/phpenmod-zts /usr/sbin/phpenmod From 5e4d3a159c5aa1e2a172f1c38bd57f5dc106c8e6 Mon Sep 17 00:00:00 2001 From: Stanislav Zhuk Date: Fri, 23 Jan 2026 12:51:45 +0200 Subject: [PATCH 5/5] upgrade blackfire-php on install if needed --- web-build/Dockerfile.frankenphp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/web-build/Dockerfile.frankenphp b/web-build/Dockerfile.frankenphp index 3347dc5..eed5faf 100644 --- a/web-build/Dockerfile.frankenphp +++ b/web-build/Dockerfile.frankenphp @@ -44,6 +44,8 @@ ln -sf /usr/sbin/phpdismod-zts /usr/sbin/phpdismod # Reconfigure blackfire-php if installed, to match the current PHP version if dpkg -s blackfire-php >/dev/null 2>&1; then + apt-get update || true + apt-get install -y --only-upgrade blackfire-php dpkg-reconfigure blackfire-php fi