用 composer create-project slim/slim-skeleton my-app 可快速安装 Slim 4,需 PHP ≥ 8.1 且启用 ext-pdo、ext-mbstring;项目需空目录,内置 nyholm/psr7 和路由结构,运行 php -S localhost:8000 -t public 即可访问 “Hello World”。

直接用 composer create-project 命令就能装好 Slim,不需要手动下载或配置 autoload——但必须确认 PHP 版本 ≥ 8.1,且 ext-pdo 和 ext-mbstring 已启用,否则项目跑不起来。
用 create-project 初始化 Slim 4 项目
Slim 官方推荐方式是基于 slim/slim-skeleton 模板创建,它已预置 PSR-7 实现(nyholm/psr7)和路由中间件结构:
composer create-project slim/slim-skeleton my-app
执行后会自动安装 Slim 4.x(当前稳定版)、依赖的 PSR 标准库、以及一个带 public/index.php 的最小可运行结构。注意:my-app 目录不能预先存在,否则命令会失败。
- 如果只想装 Slim 核心(无骨架),改用
composer require slim/slim:^4.13,但得自己写入口文件和 PSR-7 实现绑定 - Slim 5 已发布,但默认 skeleton 仍指向 v4;如需 v5,显式指定:
composer create-project slim/slim-skeleton:dev-develop my-app - Windows 下若提示
proc_open(): fork failed,大概率是 WSL 或 Docker 环境未正确挂载,换 CMD/PowerShell 重试
验证安装是否成功:启动内置服务器
进到项目目录后,直接用 PHP 内置服务器跑起来:
cd my-app php -S localhost:8000 -t public
访问 http://localhost:8000,应看到 “Hello World” 页面。关键点在于:
-
-t public必须指定,因为路由入口在public/index.php,而非项目根目录 - 如果页面空白或报
Class 'Psr\Http\Message\ServerRequestInterface' not found,说明 PSR-7 实现没加载,检查vendor/autoload.php是否被正确引入 - 部分旧版 XAMPP/MAMP 自带 PHP 可能缺
ext-curl,导致 Composer 安装中途卡住,建议用 官方 Windows PHP 包 替代
写第一个路由时要注意的依赖绑定
Slim 4+ 不再自带 PSR-7 实现,靠第三方包提供请求/响应对象。骨架中默认用了 nyholm/psr7,所以你写路由时可以直接用原生接口:
$app->get('/hello/{name}', function ($request, $response, $args) {
$name = $args['name'];
$response->getBody()->write("Hello, $name");
return $response;
});
但如果你删了 nyholm/psr7 改用 guzzlehttp/psr7,就得额外加一句 ->withBody(...) 处理响应体,因为 Guzzle 的 Stream 默认不可写。Slim 不强制绑定某一个实现,但骨架选型决定了你代码的简洁程度。
- 别在
index.php里直接 new Request —— 所有请求对象由容器注入,手动构造会导致getUri()、getParsedBody()等方法行为异常 - 如果用 Laravel Valet,需确保
valet park在项目父目录执行,否则my-app.test无法解析到public/ - 调试时想看完整请求头,用
$request->getHeaders(),不是$request->getHeaderLine()—— 后者只返回合并后的字符串,丢失多值信息
真正容易卡住的地方不在安装命令本身,而在于 PHP 扩展缺失、Web 服务器文档根路径配错、或者误以为 Slim 会自动处理 POST 表单解析——它不会,$request->getParsedBody() 只对 application/json 或 application/x-www-form-urlencoded 生效,上传文件得自己读 $_FILES。










