
php -S 是 PHP 5.4+ 内置的轻量级开发用 Web 服务器启动标志,用于快速启动本地 HTTP 服务,无需 Apache 或 Nginx,适用于调试和学习场景。
`php -s` 是 php 5.4+ 内置的轻量级开发用 web 服务器启动标志,用于快速启动本地 http 服务,无需 apache 或 nginx,适用于调试和学习场景。
PHP 自 5.4 版本起内置了一个简易但功能完备的命令行 Web 服务器,专为开发与测试设计。-S(大写 S)标志即代表 “Run with built-in web server”(以内置 Web 服务器模式运行),是启用该功能的核心开关。
其基本语法如下:
php -S <addr>:<port> [-t <docroot>] [router]
-
<addr>:<port></port></addr>:指定监听地址与端口,如localhost:4000、127.0.0.1:8000,甚至0.0.0.0:8080(允许局域网访问,需注意安全); -
-t <docroot></docroot>(可选):显式指定文档根目录,默认为当前工作目录; -
[router](可选):指定一个路由脚本(如router.php),用于自定义请求分发逻辑(例如重写 URL、处理静态资源、拦截 API 请求等)。
✅ 示例一:启动默认服务
php -S localhost:4000
此时服务器将监听 http://localhost:4000,并从当前目录提供 .php 和静态文件(.html, .css, .js 等)。
立即学习“PHP免费学习笔记(深入)”;
✅ 示例二:指定文档根目录与路由脚本
php -S 127.0.0.1:8000 -t public/ router.php
该命令以 public/ 为 Web 根目录,并将所有请求先交由 router.php 处理——这是构建单页应用(SPA)或简易框架时的关键技巧。
⚠️ 注意事项:
- 内置服务器仅限开发环境使用,不具备生产级性能、安全性与并发处理能力,切勿用于线上部署;
- 它不解析
.htaccess,也不支持 Apache/Nginx 的重写规则,所有路由逻辑必须由 PHP 路由脚本显式实现; - 静态文件(如图片、CSS)会自动响应,但若路由脚本中未正确返回
false或调用return false,可能导致静态资源被错误地交由 PHP 脚本处理而返回 500; - 若未提供路由脚本且请求路径不匹配现有文件,服务器将返回
404 Not Found(而非尝试执行index.php)。
? 小技巧:快速验证路由脚本(router.php)示例:
<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif|css|js)$/', $_SERVER["REQUEST_URI"])) {
return false; // 让内置服务器直接返回静态文件
}
// 否则交由 index.php 处理(模拟前端控制器)
require __DIR__ . '/index.php';总结来说,-S 不是一个通用 CMD 参数,而是 PHP 解释器原生支持的专用服务启动模式——它让开发者摆脱环境配置负担,真正实现“开箱即用”的 PHP 开发体验。理解其定位与限制,能帮你更高效、更安全地开展本地实验与教学实践。



















