Category
stdlib · php-src-strict · phantom extension (zip under PROFILE=8.4)
Problem
Pinned-container Zend 8.2 does not ship ext/zip. On the default profile, php-compiler correctly reports zip absent (matching #18137). Under PHP_COMPILER_PROFILE=8.4, it again advertises the module and entry points (extension_loaded('zip'), class_exists('ZipArchive'), function_exists('zip_open')).
Related Reflection-only ticket #24666 (zip_open named args) assumes the symbol exists — this issue is the PROFILE=8.4 registration phantom vs the reference Zend build.
Probed 2026-07-29 Zend 8.2.32 vs bin/vm.php @ 3ab3fae30.
| Repro |
Zend 8.2 |
VM default |
VM PROFILE=8.4 |
extension_loaded('zip') |
false |
false |
true |
class_exists('ZipArchive') |
false |
false |
true |
function_exists('zip_open') |
false |
false |
true |
php-src reference
PHP implementation target
Repro
./script/docker-exec.sh -- bash -lc 'cat > /tmp/zip_ph.php <<'"'"'PHP'"'"'
<?php
echo "extension_loaded(zip)="; var_export(extension_loaded("zip")); echo "\n";
echo "class_exists(ZipArchive)="; var_export(class_exists("ZipArchive")); echo "\n";
echo "function_exists(zip_open)="; var_export(function_exists("zip_open")); echo "\n";
PHP
php /tmp/zip_ph.php
php bin/vm.php /tmp/zip_ph.php
PHP_COMPILER_PROFILE=8.4 php bin/vm.php /tmp/zip_ph.php'
Done when
Category
stdlib· php-src-strict · phantom extension (zip under PROFILE=8.4)Problem
Pinned-container Zend 8.2 does not ship
ext/zip. On the default profile, php-compiler correctly reports zip absent (matching #18137). UnderPHP_COMPILER_PROFILE=8.4, it again advertises the module and entry points (extension_loaded('zip'),class_exists('ZipArchive'),function_exists('zip_open')).Related Reflection-only ticket #24666 (
zip_opennamed args) assumes the symbol exists — this issue is the PROFILE=8.4 registration phantom vs the reference Zend build.Probed 2026-07-29 Zend 8.2.32 vs
bin/vm.php@3ab3fae30.extension_loaded('zip')falsefalsetrueclass_exists('ZipArchive')falsefalsetruefunction_exists('zip_open')falsefalsetruephp-src reference
ext/zip/php_zip.c— module + ZipArchiveext/zip/php_zip.stub.php—zip_open/ ZipArchive stubsPHP implementation target
ext/zipregistration the same way as other PROFILE=8.4 phantoms (ext/ldapRegression: extension_loaded('ldap')/ldap_connect/constants bucket phantom under PROFILE=8.4 — Zend ext/ldap absent (re-#23857, ext/ldap) #24536,ext/pgsqlRegression: extension_loaded('pgsql')/function_exists('pg_connect')/PGSQL_* phantom — Zend ext/pgsql absent (ext/pgsql) #24994 / Regression: pg_set_error_context_visibility() phantom under PROFILE=8.4 — absent without ext/pgsql (ext/pgsql) #24627)extension_loaded/class_exists/function_existsmust match container Zend unless zip is explicitly side-loadedRepro
Done when
extension_loaded('zip'),ZipArchive, andzip_openagree with container Zend (absent → false) unless zip is explicitly enabled/side-loaded