[CLI] Load custom PHP.wasm extensions#3616
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What it does
Adds Playground CLI support for loading custom PHP.wasm extensions before PHP
starts:
--php-extensionis repeatable and accepts a local path,file:URL, orhttp(s):URL to a PHP extension manifest.Manifests can now describe both the artifact matrix and startup settings in one
JSON file:
{ "name": "spx", "version": "0.1.0", "artifacts": [ { "phpVersion": "8.4", "sourcePath": "spx-php8.4-jspi.so" } ], "iniEntries": { "spx.http_enabled": "1" }, "env": { "SPX_DATA_DIR": "/internal/shared/spx/data" } }Rationale
The PHP.wasm runtime can load externally built JSPI side modules, and
@php-wasm/compile-extensionemits manifests for those builds. CLI users stillhad no direct way to pass those manifests through to the Node runtime.
Custom extensions must be declared at startup because PHP reads extension
.inifiles while booting. Passing manifests through the existing runtimeextensionsarray keeps CLI behavior aligned withloadNodeRuntime().The user-facing format is intentionally one manifest file rather than separate
manifest and loader-config files. Runtime settings such as
iniEntries,env,loadWithIniDirective, andextensionDirlive directly in the manifest.Implementation
cliExtensionArgsToExtensionsArray().intl,redis,memcached,xdebug)with custom
--php-extension=<manifest>entries.PHPExtension[]into both Blueprint v1 and v2 CLIworkers.
allow runtime startup settings.
resolvePHPExtension().@php-wasm/compile-extensionREADMEs.Testing instructions