Skip to content

man php does not mention router script usage. #10964

Closed

Description

@ash-m

Description

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.

PHP Version

PHP 8.1.17

Operating System

Ubuntu 22.04.2 LTS

Activity

  1. iluuu1994 commented on Apr 1, 2023

    @iluuu1994
    Member

    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.

  2. ash-m commented on Apr 11, 2023

    @ash-m
    Author

    @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?

  3. reopened this on Apr 11, 2023
  4. iluuu1994 commented on Apr 12, 2023

    @iluuu1994
    Member

    Yes, the path does not affect the router path.

  5. added 2 commits that reference this issue on Aug 3, 2023
    997a367
    75441d7
  6. added a commit that references this issue on Aug 3, 2023
    50bb380
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions