摘要:PHP 5.4.0起, CLI SAPI 提供了一個內置的Web服務器。這個內置的Web服務器主要用于本地開發使用,不可用于線上產品環境。URI請求會被發...
PHP 5.4.0起, CLI SAPI 提供了一個內置的Web服務器。
這個內置的Web服務器主要用于本地開發使用,不可用于線上產品環境。
URI請求會被發送到PHP所在的的工作目錄(Working Directory)進行處理,除非你使用了-t參數來自定義不同的目錄。
如果請求未指定執行哪個PHP文件,則默認執行目錄內的index.php 或者 index.html。如果這兩個文件都不存在,服務器會返回404錯誤。
當你在命令行啟動這個Web Server時,如果指定了一個PHP文件,則這個文件會作為一個“路由”腳本,意味著每次請求都會先執行這個腳本。如果這個腳本返回 FALSE ,那么直接返回請求的文件(例如請求靜態文件不作任何處理)。否則會把輸出返回到瀏覽器。
Example #1 啟動Web服務器
$ cd ~/public_html $ php -S localhost:8000
終端窗口會顯示:
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2020 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 2020 Listening on localhost:8000 Document root is /home/me/public_html Press Ctrl-C to quit. [Thu Jul 21 10:48:48 2020] ::1:39144 GET /favicon.ico - Request read [Thu Jul 21 10:48:50 2020] ::1:39146 GET / - Request read [Thu Jul 21 10:48:50 2020] ::1:39147 GET /favicon.ico - Request read [Thu Jul 21 10:48:52 2020] ::1:39148 GET /myscript.html - Request read [Thu Jul 21 10:48:52 2020] ::1:39149 GET /favicon.ico - Request read
Example #2 啟動時指定根目錄
$ cd ~/public_html $ php -S localhost:8000 -t foo/
終端窗口顯示:
PHP 5.4.0 Development Server started at Thu Jul 21 10:50:26 2020 Listening on localhost:8000 Document root is /home/me/public_html/foo Press Ctrl-C to quit
Example #3 使用路由(Router)腳本
請求圖片直接顯示圖片,請求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
執行之后終端顯示:
PHP 5.4.0 Development Server started at Thu Jul 21 10:53:19 2020 Listening on localhost:8000 Document root is /home/me/public_html Press Ctrl-C to quit. [Thu Jul 21 10:53:45 2020] ::1:55801 GET /mylogo.jpg - Request read [Thu Jul 21 10:53:52 2020] ::1:55803 GET /abc.html - Request read [Thu Jul 21 10:53:52 2020] ::1:55804 GET /favicon.ico - Request read