You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
man php does not mention router script usage. #10964
The current documentation for man php (relevant parts):
php(1) Scripting Language php(1)
NAME
php - PHP Command Line Interface 'CLI'
php-cgi - PHP Common Gateway Interface 'CGI' command
SYNOPSIS
[-- snip --]
php [options] -S addr:port [-t docroot]
DESCRIPTION
[-- snip --]
PHP also contains an built-in web server for application development purpose. By using the -S option
where addr:port point to a local address and port PHP will listen to HTTP requests on that address
and port and serve files from the current working directory or the docroot passed by the -t option.
[-- snip --]
OPTIONS
[-- snip --]
--server addr:port
-S addr:port Start built-in web server on the given local address and port
--docroot docroot
-t docroot Specify the document root to be used by the built-in web server
The documentation says:
If a PHP file is given on the command line when the web server is started it is treated as a "router" script. The script is run at the start of each HTTP request. If this script returns false, then the requested resource is returned as-is. Otherwise the script's output is returned to the browser.
There is no mention of the router script in the man, nor does this really specify how it interacts with -t.
The documentation could be improved. Basically, any request first goes to the router. The router may decide to return false from the script. If it does, the CLI server falls back to the default behavior, looking up the file relative to the document root you've specified via -t.
@iluuu1994 Thank you. But just to clarify (as it seems from TIASing), -t has no effect on the router path, correct? ie cd /home/ash-m; php -S 0.0.0.0:8080 -t /srv/app public/router.php does not look for the router at /srv/app/public/router.php; it is only relative to the directory the command is run from (in this case, /home/ash-m/public/router.php), correct?
Activity
iluuu1994 commentedon Apr 1, 2023
The documentation could be improved. Basically, any request first goes to the router. The router may decide to return
falsefrom the script. If it does, the CLI server falls back to the default behavior, looking up the file relative to the document root you've specified via-t.ash-m commentedon Apr 11, 2023
@iluuu1994 Thank you. But just to clarify (as it seems from TIASing),
-thas no effect on the router path, correct? iecd /home/ash-m; php -S 0.0.0.0:8080 -t /srv/app public/router.phpdoes not look for the router at/srv/app/public/router.php; it is only relative to the directory the command is run from (in this case,/home/ash-m/public/router.php), correct?iluuu1994 commentedon Apr 12, 2023
Yes, the path does not affect the router path.
Fix GH-10964: Improve `man` page about the built-in server
Merge branch 'PHP-8.1' into PHP-8.2
Merge branch 'PHP-8.2'