mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
ensure_php_toolchain installed the php and composer binaries and stopped there. A distro ships the interpreter and its extensions as separate packages, and ensure_command_present returns early once shutil.which finds php - which it always does since the image bakes the interpreter - so the extensions were never provisioned on any path. composer then refused to resolve the vendor tree with "phpunit/phpunit requires ext-dom * -> it is missing from your system" and test-unit-php failed in every workspace job. The loaded ini list in those logs shows 20-mbstring.ini present and no 20-dom.ini, 20-xml.ini or 20-xmlwriter.ini, i.e. php-xml missing. Extensions are now probed against php -m and installed from a per-manager mapping, then re-probed so a package that does not deliver the extension raises instead of leaving composer to fail later. The loop sits in ensure_php_toolchain because both entry points pass through it: the image build via utils.install.interpreters and the test run via scripts/install/php.sh, so a prebuilt image is repaired at test time. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>