PHP 5.4起就在CLI SAPI中內置了web服務器,但只是提供開發測試使用,不推薦使用中生產環境中。由於這個服務器接受處理請求時順序執行的,不能併發處理。php
這個內置的web服務器使用起來很是的方便,你只須要執行下面的命令:css
$ php -S localhost:8000
而後就能夠訪問了。這樣啓動後,默認的web服務目錄是執行命令的當前目錄,若是不想使用當前目錄,你須要使用 -t 參數來指定。html
php -S localhost:8000 -t foo/
在這個例子中,對圖片的請求會返回相應的圖片,但對HTML文件的請求會顯示「Welcome to PHP」:web
// 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
經過程序判斷來調整同一個PHP路由器腳本在內置Web服務器中和在生產服務器中的不一樣行爲:api
// router.php if (php_sapi_name() == 'cli-server') { /* route static assets and return false */ } /* go on with normal index.php operations */
$ php -S localhost:8000 router.php
這個內置的web服務器能識別一些標準的MIME類型資源,它們的擴展有:.css, .gif, .htm, .html, .jpe, .jpeg, .jpg, .js, .png, .svg, and .txt。對.htm 和 .svg 擴展到支持是在PHP 5.4.4以後才支持的。服務器
若是你但願這個Web服務器可以正確的處理不被支持的MIME文件類型,這樣作:併發
// 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服務器,你的啓動命令須要改爲下面這樣:ide
$ php -S 0.0.0.0:8000
這樣你就能夠經過 8000 端口遠程的訪問這個內置的web服務器了svg