diff --git a/src/SelfManage/BuildTools/CheckAllBuildTools.php b/src/SelfManage/BuildTools/CheckAllBuildTools.php index ac02c6ab..c0220129 100644 --- a/src/SelfManage/BuildTools/CheckAllBuildTools.php +++ b/src/SelfManage/BuildTools/CheckAllBuildTools.php @@ -70,6 +70,25 @@ public static function buildToolsFactory(): self PackageManager::Brew->value => 'libtool', ], ), + // Composer's archive downloader uses /usr/bin/unzip first + // and falls back to git-source-cloning when it isn't + // present (not to PHP's ZipArchive). Without unzip, a + // pre-packaged-binary dist URL is silently swapped for a + // git clone of the source tree and the .so the user paid + // for in download time is never extracted, surfacing as + // ExtensionBinaryNotFound when PIE's prePackagedBinary + // check looks for it in the vendor dir. Bare php:X.Y-cli + // Debian images do not ship /usr/bin/unzip. + new BinaryBuildToolFinder( + 'unzip', + [ + PackageManager::Apt->value => 'unzip', + PackageManager::Apk->value => 'unzip', + PackageManager::Dnf->value => 'unzip', + PackageManager::Yum->value => 'unzip', + PackageManager::Brew->value => 'unzip', + ], + ), new PhpizeBuildToolFinder( [ PackageManager::Apt->value => 'php-dev',