本文目录导读:

我来详细讲解PHP内置服务器的使用方法。
启动PHP内置服务器
基本语法
php -S localhost:8000
指定主机和端口
# 监听所有接口 php -S 0.0.0.0:8080 # 指定IP地址 php -S 192.168.1.100:8000
指定文档根目录
# 使用当前目录作为根目录 php -S localhost:8000 # 指定其他目录 php -S localhost:8000 -t /path/to/public # Windows示例 php -S localhost:8000 -t C:\www\myproject
路由配置
使用路由器文件
# 使用router.php处理请求 php -S localhost:8000 router.php
创建路由器文件(router.php)
<?php
// 路由器示例
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
// 静态文件直接返回
if (file_exists(__DIR__ . $path)) {
return false;
}
// API路由处理
switch ($path) {
case '/api/users':
echo json_encode(['users' => ['Alice', 'Bob']]);
break;
case '/api/info':
echo phpinfo();
break;
case '/home':
echo 'Home Page';
break;
default:
http_response_code(404);
echo 'Not Found';
}
?>
常用使用示例
简单项目启动
# 启动项目 cd myproject php -S localhost:8080 -t public # 启用错误显示 php -d display_errors=1 -S localhost:8080
Laravel项目
# Laravel开发服务器 php -S localhost:8000 -t public
WordPress项目
# WordPress开发环境 php -S localhost:8000
高级配置
环境变量设置
# 设置环境变量 APP_ENV=development php -S localhost:8000 # 使用多个环境变量 DB_HOST=localhost DB_PASSWORD=123456 php -S localhost:8000
使用PHP配置
# 加载自定义php.ini php -c /custom/path/php.ini -S localhost:8000 # 启用PHP扩展 php -d extension=mysqli -S localhost:8000
完整的开发环境示例
创建启动脚本(start.sh)
#!/bin/bash
# PHP开发服务器启动脚本
# 设置颜色
GREEN='\033[0;32m'
NC='\033[0m' # No Color
# 配置
HOST="0.0.0.0"
PORT="8000"
DOCROOT="public"
ROUTER="router.php"
echo -e "${GREEN}PHP Dev Server Starting...${NC}"
echo -e "${GREEN}Host: $HOST${NC}"
echo -e "${GREEN}Port: $PORT${NC}"
echo -e "${GREEN}Root: $DOCROOT${NC}"
# 检查目录是否存在
if [ ! -d "$DOCROOT" ]; then
echo "Error: Directory $DOCROOT does not exist"
exit 1
fi
# 启动服务器
if [ -f "$ROUTER" ]; then
php -S "$HOST:$PORT" -t "$DOCROOT" "$ROUTER"
else
php -S "$HOST:$PORT" -t "$DOCROOT"
fi
高级路由器(router.php)
<?php
/**
* 简单PHP路由器
* 处理API请求和静态文件
*/
// 获取请求路径
$request_uri = $_SERVER['REQUEST_URI'];
$path = parse_url($request_uri, PHP_URL_PATH);
$method = $_SERVER['REQUEST_METHOD'];
// 定义路由表
$routes = [
'GET' => [
'/' => 'home',
'/api/users' => 'getUsers',
'/api/user/{id}' => 'getUser',
'/health' => 'healthCheck',
],
'POST' => [
'/api/users' => 'createUser',
'/api/login' => 'login',
],
'PUT' => [
'/api/user/{id}' => 'updateUser',
],
'DELETE' => [
'/api/user/{id}' => 'deleteUser',
],
];
// 检查静态文件
if ($path !== '/' && file_exists(__DIR__ . $path)) {
return false; // 让PHP服务器处理静态文件
}
// 路由匹配
require_once 'controllers/UserController.php';
$controller = new UserController();
// 简单路由分发
header('Content-Type: application/json');
switch ($path) {
case '/':
echo json_encode(['message' => 'Welcome to API']);
break;
case '/api/users':
echo $controller->getAllUsers();
break;
case '/health':
echo json_encode(['status' => 'ok', 'time' => date('Y-m-d H:i:s')]);
break;
default:
// 检查RESTful模式
if (preg_match('/\/api\/user\/(\d+)/', $path, $matches)) {
$id = $matches[1];
switch ($method) {
case 'GET':
echo $controller->getUser($id);
break;
case 'PUT':
$data = json_decode(file_get_contents('php://input'), true);
echo $controller->updateUser($id, $data);
break;
case 'DELETE':
echo $controller->deleteUser($id);
break;
}
} else {
http_response_code(404);
echo json_encode(['error' => 'Not Found']);
}
}
调试技巧
查看请求信息(debug.php)
<?php
// 调试文件:显示所有请求信息
echo "Request Method: " . $_SERVER['REQUEST_METHOD'] . "<br>";
echo "Request URI: " . $_SERVER['REQUEST_URI'] . "<br>";
echo "Query String: " . $_SERVER['QUERY_STRING'] . "<br>";
echo "User Agent: " . $_SERVER['HTTP_USER_AGENT'] . "<br>";
echo "<h3>Headers:</h3>";
$headers = getallheaders();
print_r($headers);
echo "<h3>GET Parameters:</h3>";
print_r($_GET);
echo "<h3>POST Parameters:</h3>";
print_r($_POST);
echo "<h3>Body:</h3>";
$body = file_get_contents('php://input');
var_dump($body);
?>
注意事项
适用场景
✅ 本地开发测试
✅ 简单项目演示
✅ 学习PHP编程
✅ API接口测试
不适用场景
❌ 生产环境
❌ 高并发场景
❌ 需要SSL的正式项目
❌ 多域名配置
停止服务器
# 方式1:Ctrl+C 停止 Ctrl+C # 方式2:后台运行,然后停止 php -S localhost:8000 & kill %1
项目示例
完整项目结构
myproject/
├── public/
│ ├── index.php
│ ├── css/
│ └── js/
├── controller/
│ └── UserController.php
├── router.php
└── start.sh
启动命令
# 开发模式 ./start.sh # 或直接运行 php -S localhost:8000 -t public router.php
PHP内置服务器是开发调试的绝佳工具,简单快速,适合学习和本地开发使用,对于生产环境,建议使用Apache或Nginx等专业Web服务器。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播