Problem
README documents dev workflows (phpc serve, phpc serve --aot) but not how to run a compiled web app behind nginx or systemd in production.
Contributors must stitch together #50 (CGI driver), #173 (FastCGI), and #180 (deploy bundle) without a single doc path from phpc build → live site.
Goal
Add docs/deploy-web-aot.md (linked from README) covering:
Build: phpc build --project . or manifest entry + binary
Layout: dist/bin/app, public/ assets, phpc.json (#180 )
CGI : spawn binary per request; env vars (QUERY_STRING, REQUEST_METHOD, …) — Web: Runtime-populated superglobals for JIT and AOT (per-request $_GET/$_POST) #49 runtime superglobals
FastCGI : nginx fastcgi_pass snippet — Web: FastCGI request loop adapter (nginx / php-fpm compatible) #173
Static files: nginx try_files vs DevServer static handler
Security pointers: Security: Request body size limits and header sanitization in CGI driver #77 body limits, PHP_COMPILER_DEBUG, no directory traversal
Local smoke before deploy: make examples-web-smoke, optional --aot (Testing: Optional examples-web-smoke --aot gate in ci-local when LLVM present #444 )
Acceptance criteria
Verification (review)
No PHPUnit required; optional link check in script/check-doc-links.sh if added later.
Dependencies
Non-goals
Problem
README documents dev workflows (
phpc serve,phpc serve --aot) but not how to run a compiled web app behind nginx or systemd in production.Contributors must stitch together #50 (CGI driver), #173 (FastCGI), and #180 (deploy bundle) without a single doc path from
phpc build→ live site.Goal
Add
docs/deploy-web-aot.md(linked from README) covering:phpc build --project .or manifestentry+binarydist/bin/app,public/assets,phpc.json(#180)QUERY_STRING,REQUEST_METHOD, …) — Web: Runtime-populated superglobals for JIT and AOT (per-request $_GET/$_POST) #49 runtime superglobalsfastcgi_passsnippet — Web: FastCGI request loop adapter (nginx / php-fpm compatible) #173try_filesvs DevServer static handlerPHP_COMPILER_DEBUG, no directory traversalmake examples-web-smoke, optional--aot(Testing: Optional examples-web-smoke --aot gate in ci-local when LLVM present #444)Acceptance criteria
Verification (review)
No PHPUnit required; optional link check in
script/check-doc-links.shif added later.Dependencies
publicdocroot resolution (dev parity)Non-goals