Found during ephpm#350 (shaped JIT default) verification.
Symptom: on Windows builds against the 8.3.31 SDK, opcache_get_status() returns false in serve mode - OPcache never activates, so opcache and the JIT are silently inert. CLI mode works (SAPI name is "cli" there). PHP 8.5 SDKs are unaffected.
Evidence: binary grep of 8.3.31-windows-x86_64\lib\php8embed.lib: the OPcache supported_sapis allowlist contains frankenphp and litespeed but not ephpm - the SDK's allowlist patch (which the Linux/macOS 8.3/8.4 builds carry, and which 8.5 no longer needs since upstream removed the allowlist) was evidently not applied to the Windows lane's build for <= 8.4.
Impact: every Windows ephpm serve deployment on PHP 8.3/8.4 runs with zero opcode caching - a large silent performance loss, and ephpm#350's JIT-by-default is a no-op there. 8.5 unaffected (no allowlist upstream).
Fix: apply the same allowlist patch in the Windows build path for 8.3/8.4, or verify why it was skipped. The artifact-level check is cheap: strings php8embed.lib | grep ephpm alongside the existing sapi names.
Found during ephpm#350 (shaped JIT default) verification.
Symptom: on Windows builds against the 8.3.31 SDK,
opcache_get_status()returnsfalsein serve mode - OPcache never activates, so opcache and the JIT are silently inert. CLI mode works (SAPI name is "cli" there). PHP 8.5 SDKs are unaffected.Evidence: binary grep of
8.3.31-windows-x86_64\lib\php8embed.lib: the OPcachesupported_sapisallowlist containsfrankenphpandlitespeedbut notephpm- the SDK's allowlist patch (which the Linux/macOS 8.3/8.4 builds carry, and which 8.5 no longer needs since upstream removed the allowlist) was evidently not applied to the Windows lane's build for <= 8.4.Impact: every Windows ephpm serve deployment on PHP 8.3/8.4 runs with zero opcode caching - a large silent performance loss, and ephpm#350's JIT-by-default is a no-op there. 8.5 unaffected (no allowlist upstream).
Fix: apply the same allowlist patch in the Windows build path for 8.3/8.4, or verify why it was skipped. The artifact-level check is cheap:
strings php8embed.lib | grep ephpmalongside the existing sapi names.