Search code examples
phpserverwebserver

CMD -S flag when starting PHP server


I recently downloaded PHP on my local machine to get some practice in for work, and when starting the PHP server, the CMD command is php -S localhost:4000.

My question is, what is the -S flag for? I was surprised not to really be able to find a good answer anywhere, other than this from Mircrosoft's docs, which didn't help much: "Modifies the treatment of string after /c or /k." For starters, the command in question doesn't make use of -c or -k, and also, this info was for the -s flag rather than -S.

It's easy enough to remember to use it when starting up the local PHP server, but it drives me nuts not actually knowing what it is or why it's needed.

Thanks in advance!


Solution

  • It stands for Run with built-in web server.. You can see this by typing

     php --help
    
    Usage: php [options] [-f] <file> [--] [args...]
       php [options] -r <code> [--] [args...]
       php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
       php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
       php [options] -S <addr>:<port> [-t docroot] [router]
       php [options] -- [args...]
       php [options] -a
    
      -a               Run as interactive shell (requires readline extension)
      -c <path>|<file> Look for php.ini file in this directory
      -n               No configuration (ini) files will be used
      -d foo[=bar]     Define INI entry foo with value 'bar'
      -e               Generate extended information for debugger/profiler
      -f <file>        Parse and execute <file>.
      -h               This help
      -i               PHP information
      -l               Syntax check only (lint)
      -m               Show compiled in modules
      -r <code>        Run PHP <code> without using script tags <?..?>
      -B <begin_code>  Run PHP <begin_code> before processing input lines
      -R <code>        Run PHP <code> for every input line
      -F <file>        Parse and execute <file> for every input line
      -E <end_code>    Run PHP <end_code> after processing all input lines
      -H               Hide any passed arguments from external tools.
      -S <addr>:<port> Run with built-in web server.
      -t <docroot>     Specify document root <docroot> for built-in web server.
      -s               Output HTML syntax highlighted source.
      -v               Version number
      -w               Output source with stripped comments and whitespace.
      -z <file>        Load Zend extension <file>.
    
      args...          Arguments passed to script. Use -- args when first argument
                       starts with - or script is read from stdin
    
      --ini            Show configuration file names
    
      --rf <name>      Show information about function <name>.
      --rc <name>      Show information about class <name>.
      --re <name>      Show information about extension <name>.
      --rz <name>      Show information about Zend extension <name>.
      --ri <name>      Show configuration for extension <name>.