## Problem Front controllers route on `$_SERVER['PATH_INFO']` or parse `REQUEST_URI`: ```php $uri = $_SERVER['PATH_INFO'] ?? parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); ``` `lib/Web/Superglobals.php` sets `REQUEST_URI` and `SCRIPT_NAME` but not **PATH_INFO** consistently for `bin/serve` / CGI. ## Goal PATH_INFO populated when request is `/index.php/foo/bar` (common Apache/nginx + PHP-FPM pattern). ## Implementation plan 1. Extend `Superglobals::populateServer()` to derive PATH_INFO from REQUEST_URI minus SCRIPT_NAME. 2. **#50** CGI driver: parse `PATH_INFO` env var when present. 3. **#88** serve.php: set PATH_INFO for pretty URLs. 4. PHPT: GET with path suffix, assert routing string. ## Acceptance criteria - [ ] `test/real/cases/web_path_info.phpt` passes VM - [ ] Document nginx try_files equivalent for AOT deploy ## Related - #50 CGI - #88 bin/serve - #76 parse_url (done) - #67 MiniWebApp router
Problem
Front controllers route on
$_SERVER['PATH_INFO']or parseREQUEST_URI:lib/Web/Superglobals.phpsetsREQUEST_URIandSCRIPT_NAMEbut not PATH_INFO consistently forbin/serve/ CGI.Goal
PATH_INFO populated when request is
/index.php/foo/bar(common Apache/nginx + PHP-FPM pattern).Implementation plan
Superglobals::populateServer()to derive PATH_INFO from REQUEST_URI minus SCRIPT_NAME.PATH_INFOenv var when present.Acceptance criteria
test/real/cases/web_path_info.phptpasses VMRelated