Built-in web server
As of PHP 5.4.0, the CLI SAPI provides a built-in web server.
This web server is designed for developmental purposes only, and should notbe used in production.
URI requests are served from the current working directory wherePHP was started, unless the -t option is used to specify anexplicit document root.
If a URI request does not specify a file, then either index.phpor index.html in the given directory are returned. If neither fileexists, then a 404 response code is returned.
If a PHP file is given on the command line when the web server isstarted it is treated as a "router" script for the web server.The script is run at the start of each HTTP request. If thisscript returns FALSE, then the requested resource is returnedas-is. Otherwise the script's output is returned to the browser.
Example #1 Starting the web server
$ cd ~/public_html
$ php -S localhost:8000
The terminal will show:
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit
After URI requests for http://localhost:8000/ andhttp://localhost:8000/myscript.html the terminal will showsomething similar to:
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit.
[Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read
[Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read
[Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read
[Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read
[Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read
Example #2 Starting with a specific document root directory
$ cd ~/public_html
$ php -S localhost:8000 -t foo/
The terminal will show:
PHP 5.4.0 Development Server started at Thu Jul 21 10:50:26 2011
Listening on localhost:8000
Document root is /home/me/public_html/foo
Press Ctrl-C to quit
Example #3 Using a Router Script
Requests for images will display them, but requests for HTML files will display "Welcome to PHP"
<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"]))
return false; // serve the requested resource as-is.
else {
echo "<p>Welcome to PHP</p>";
}
?>
$ php -S localhost:8000 router.php
After several URI requests the terminal will show something similar to:
PHP 5.4.0 Development Server started at Thu Jul 21 10:53:19 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit.
[Thu Jul 21 10:53:45 2011] ::1:55801 GET /mylogo.jpg - Request read
[Thu Jul 21 10:53:52 2011] ::1:55803 GET /abc.html - Request read
[Thu Jul 21 10:53:52 2011] ::1:55804 GET /favicon.ico - Request read
发表评论 取消回复