傳統 PHP 開發需安裝 Apache 或 Nginx、配置虛擬主機、設定模組整合,流程繁瑣。PHP 5.4 起內建 CLI SAPI 伺服器,零配置即可啟動,適合快速驗證程式碼、原型開發、單元測試,**但不建議用於生產環境**(單執行緒、無並發處理能力)。
# 當前目錄為根目錄,監聽 localhost:8000 php -S localhost:8000 # 指定文檔根目錄 php -S localhost:8000 -t public/ # 允許區網存取(綁定 0.0.0.0) php -S 0.0.0.0:8000 -t public/
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:50 2011] ::1:39146 GET / - Request read [Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read
啟動時指定 PHP 腳本作為「路由器」,所有請求先經由該腳本處理:
<?php
// router.php
// 靜態資源直接回傳(回傳 false)
if (preg_match('/\.(?:png|jpg|jpeg|gif|css|js|ico)$/', $_SERVER["REQUEST_URI"])) {
return false;
}
// 動態路由邏輯
echo "<p>Welcome to PHP Router</p>";
?>
php -S localhost:8000 router.php
<?php
if (php_sapi_name() === 'cli-server') {
// 內建伺服器:處理靜態資源、關閉某些中介軟體
} else {
// Apache/Nginx 生產環境:正常流程
}
?>
內建對應:.css, .gif, .htm, .html, .jpe, .jpeg, .jpg, .js, .png, .svg, .txt(.htm/.svg 為 5.4.4+ 新增)。
<?php
// router.php 處理 .ogg 影音
$path = pathinfo($_SERVER["SCRIPT_FILENAME"]);
if ($path["extension"] === "ogg") {
header("Content-Type: video/ogg");
readfile($_SERVER["SCRIPT_FILENAME"]);
} else {
return false;
}
?>
| 優點 | 缺點/限制 |
|---|---|
| 零安裝、零配置、秒啟動 | 單執行緒,無法並發處理請求 |
| 適合單機開發、API 測試、靜態站點預覽 | 不支援 .htaccess、虛擬主機、SSL、URL 重寫等進階功能 |
| 路由器腳本提供彈性控制 | 記憶體洩漏風險,長時間運行需定期重啟 |
router.php 統一入口,配合框架前端控制器模式。composer serve 或 npm run dev 整合至工作流。PHP 內建伺服器讓「寫完即測」成為現實,是現代 PHP 開發流程中不可或缺的輕量工具。