但据官方文档上说,这个内置的Web服务器只是提供开发测试使用,不推荐使用中生产环境中。因为这个服务器接受处理请求时顺序执行的,不能并发处理。
这个内置的web服务器使用起来非常的方便,你只需要执行下面的命令:
$ php -S localhost:8000
然后就可以访问了。这样启动后,默认的web服务目录是执行命令的当前目录,如果不想使用当前目录,你需要使用 -t 参数来指定。
例 #1 启动Web服务器
$ cd ~/public_html
$ php -S localhost:8000
终端输出信息:
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
当请求了 http://localhost:8000/ 和 http://localhost:8000/myscript.html 地址后,终端输出类似如下的信息:
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011Listening on localhost:8000Document root is /home/me/public_htmlPress 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例 #2 启动web服务器时指定文档的根目录
<?php// router.phpif (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
<?php// router.phpif (php_sapi_name() == "cli-server") {/* route static assets and return false */}/* go on with normal index.php operations */?>$ php -S localhost:8000 router.php
<?php// router.php$path = pathinfo($_SERVER["SCRIPT_FILENAME"]);if ($path["extension"] == "ogg") {header("Content-Type: video/ogg");readfile($_SERVER["SCRIPT_FILENAME"]);}else {return FALSE;}?>$ php -S localhost:8000 router.php如果你希望能远程的访问这个内置的web服务器,你的启动命令需要改成下面这样: