Repository navigation
Conversation
Serves WordPress with the installed PHP's built-in web server and a SQLite database, without Docker. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🤖 PR meta 🤖🎉 PropsIf you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. Props Bot commandsYou can trigger Props Bot actions by commenting on this PR:
Updated as activity occurs, without notifying anyone named here. Add the 📦 Bundle sizeSize Change: 0 B Total Size: 9.06 MB
⚡ PerformanceShow the resultsClient side metrics exclude the server response time. front-end-block-theme
front-end-classic-theme
media-processing
media-upload
post-editor
site-editor
🏁 Flaky testsSome tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information. Custom Completer: should allow newlines after multiple option completions in
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What?
Follow up to #74609.
Adds an experimental
phpruntime towp-env:wp-env start --runtime=phpserves WordPress with the PHP installed on the computer, using PHP's built-in web server and a SQLite database. No Docker.Why?
Docker is slow to start and heavy to run, especially with one site per worktree. The Playground runtime avoids Docker, but runs PHP as WebAssembly, which is noticeably slower: in a local comparison, the paragraph and writing flow e2e specs took 57 seconds on PHP's built-in server and 2.1 minutes on Playground. Most WordPress developers already have PHP installed.
How?
A third runtime next to
dockerandplayground, inpackages/env/lib/runtime/php/:startdownloads the configured sources with the existing download code, plus the SQLite Database Integration plugin. The first time, it copies WordPress core intophp/in the work directory (copy-on-write where the file system supports it), links the plugins, themes and mappings into it, and installs WordPress. Later starts only rewritewp-config.php, so a newWP_ENV_PORTtakes effect, and start the server.--updatedownloads the sources again and refreshes the core files, keeping the database.php-database/, outside the folder the server serves. A copy is kept after installation, andresetrestores it.logsshows the PHP server's log, and follows it with--watch.runis not supported, like Playground. Multisite fails with a clear error. Xdebug, SPX, phpMyAdmin andphpVersionare not supported yet and give a warning.Testing Instructions
phpwithpdo_sqliteis on yourPATH.npm run wp-env-test -- start --runtime=php. It should start in a few seconds.WP_BASE_URL=http://localhost:8889 npm run test:e2e -- --project=chromium test/e2e/specs/editor/blocks/paragraph.spec.js test/e2e/specs/editor/various/writing-flow.spec.js test/e2e/specs/editor/blocks/image.spec.js. Locally: 82 passed, 1 skipped.npm run wp-env-test -- reset,stop, thenWP_ENV_PORT=8890 npm run wp-env-test -- start --runtime=phpand check the site at the new port.Use of AI Tools
Written with Claude Code (Claude Opus 5.5).
🤖 Generated with Claude Code