Skip to content

Windows 8.3/8.4 SDKs: php8embed.lib missing the ephpm OPcache SAPI-allowlist patch - OPcache never activates in serve mode #47

Description

@luthermonson

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions