CLI SAPI提供了一個內(nèi)置的Web服務(wù)器,它可以用于本地開發(fā)和調(diào)試目的。這個內(nèi)置的Web服務(wù)器僅適用于開發(fā)環(huán)境,不適合在生產(chǎn)環(huán)境中使用。內(nèi)置的Web服務(wù)器提供了一個簡單而方便的方式來運行和測試PHP應(yīng)用程序,無需額外安裝和配置獨立的Web服務(wù)器軟件。
可以直接使用命令行運行一個PHP腳本,然后通過瀏覽器訪問指定的URL來查看和測試應(yīng)用程序的輸出。URI請求會被發(fā)送到PHP所在的的工作目錄(Working Directory)進行處理,除非使用了-t參數(shù)來自定義不同的目錄。
如果請求未指定執(zhí)行哪個PHP文件,則默認執(zhí)行目錄內(nèi)的index.php 或者 index.html。如果這兩個文件都不存在,服務(wù)器會返回404錯誤。
當(dāng)在命令行啟動這個Web Server時,如果指定了一個PHP文件,則這個文件會作為一個“路由”腳本,意味著每次請求都會先執(zhí)行這個腳本。如果這個腳本返回 false ,那么直接返回請求的文件(例如請求靜態(tài)文件不作任何處理)。否則會把輸出返回到瀏覽器。
一、啟動Web服務(wù)器
$ 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 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
二、指定根目錄
$ cd ~/public_html $ php -S localhost:8000 -t foo/
終端窗口顯示:
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
三、使用路由腳本
請求圖片直接顯示圖片,請求HTML則顯示“Welcome to PHP”
<?php // router.php if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) return false; // 直接返回請求的文件 else { echo "<p>Welcome to PHP</p>"; } ?> $ php -S localhost:8000 router.php
執(zhí)行之后終端顯示:
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
四、檢查CLI網(wǎng)絡(luò)服務(wù)器
在使用 CLI 網(wǎng)絡(luò)服務(wù)器進行開發(fā)期間,重復(fù)使用框架路由器腳本,之后也可使用生產(chǎn)網(wǎng)絡(luò)服務(wù)器:
<?php // 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
五、不支持的文件類型
如果需要提供 CLI 網(wǎng)絡(luò)服務(wù)器無法處理其 MIME 類型的靜態(tài)資源,請使用:
<?php // router.php $path = pathinfo($_SERVER["SCRIPT_FILENAME"]); if ($path["extension"] == "el") { header("Content-Type: text/x-script.elisp"); readfile($_SERVER["SCRIPT_FILENAME"]); } else { return FALSE; } ?>
$ php -S localhost:8000 router.php
六、從遠程計算機訪問
可以使用以下方法讓任何界面都能通過 8000 端口訪問網(wǎng)絡(luò)服務(wù)器:
$ php -S 0.0.0.0:8000
注意:內(nèi)置網(wǎng)絡(luò)服務(wù)器不應(yīng)在公共網(wǎng)絡(luò)上使用。