Category
stdlib · php-src-strict
Problem
On the pinned Docker harness (no ext/zip built), Zend reports extension_loaded('zip') === false and class_exists('ZipArchive', false) === false. php-compiler advertises both, creating a phantom extension surface (function_exists('zip_open') remains false, but autoload/feature probes see zip as present).
| Repro |
Zend 8.2 |
VM (2026-07-12) |
extension_loaded('zip') |
false |
true |
class_exists('ZipArchive', false) |
false |
true |
function_exists('zip_open') |
false |
false |
php-src reference
PHP implementation target
Repro
./script/docker-exec.sh -- bash -lc 'php bin/vm.php test/repro/maintainer_gap_zip_extension_phantom.php'
# Zend: ok · VM: fail
Done when
Category
stdlib· php-src-strictProblem
On the pinned Docker harness (no
ext/zipbuilt), Zend reportsextension_loaded('zip') === falseandclass_exists('ZipArchive', false) === false. php-compiler advertises both, creating a phantom extension surface (function_exists('zip_open')remains false, but autoload/feature probes see zip as present).extension_loaded('zip')falsetrueclass_exists('ZipArchive', false)falsetruefunction_exists('zip_open')falsefalsephp-src reference
ext/zip/php_zip.c— module init registers extension + classes togetherext/standard/info.c—extension_loaded()reflects loaded modules onlyPHP implementation target
ext/zip/Module.php(or registry gate) — do not registerzipinget_loaded_extensions()/extension_loaded()until ext/zip parity (Stdlib: ext/zip — ZipArchive open/add/extract (ext/zip parity) #3337) is actually loadedZipArchiveclass advertisement when module absent; full implementation tracked separately (Stdlib: ext/zip — ZipArchive open/add/extract (ext/zip parity) #3337)Repro
Done when
extension_loaded('zip')false,class_exists('ZipArchive', false)false on 8.2 reference profiletest/compliance/cases/zip/