首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 5.4 內建 Web 伺服器:開發測試的輕量利器

     編輯:PHP 綜合知識

為什麼需要內建伺服器?

傳統 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 生產環境:正常流程
}
?>

支援的 MIME 類型

內建對應:.css, .gif, .htm, .html, .jpe, .jpeg, .jpg, .js, .png, .svg, .txt(.htm/.svg 為 5.4.4+ 新增)。

自訂 MIME 類型範例

<?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 整合至工作流。
  • 需測試並發、效能、SSL 時,請改用 Docker + Nginx/Apache 模擬生產環境。

PHP 內建伺服器讓「寫完即測」成為現實,是現代 PHP 開發流程中不可或缺的輕量工具。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved