最稳妥方式是用 composer create-project 安装 Slim 4 或 5,它自动创建含 public/index.php、src/ 和 composer.json 的完整骨架项目,避免手动配置 autoload 和入口文件出错;若仅 require slim/slim 则缺少 PSR-7 实现、路由示例等,易导致 404 或 Class not found 错误。

直接用 composer create-project 装 Slim 4 或 Slim 5 是最稳妥的方式,跳过手动配置 autoload 和 index.php 入口的常见翻车点。
用 create-project 快速初始化 Slim 项目
这是官方推荐方式,自动拉取带完整结构(含 public/index.php、src/、composer.json)的 Skeleton 项目,避免手写路由引导文件出错。
- 装 Slim 5(PHP 8.1+):
composer create-project slim/slim-skeleton my-api
- 装 Slim 4(兼容 PHP 7.4–8.2):
composer create-project slim/slim-skeleton:^4 my-api
- 执行后进入目录,
cd my-api,再运行php -S localhost:8000 -t public
即可访问http://localhost:8000
为什么不要用 require slim/slim 直接装?
单纯 composer require slim/slim 只装核心库,不带路由示例、中间件模板、PSR-7 实现(如 nyholm/psr7)或 Web 服务器配置,新手极易卡在「404」或「No route found」上。
- 缺少 PSR-7 消息接口实现 → 报错
Class "Laminas\Diactoros\ServerRequest" not found或类似提示 - 没配
public/index.php的Request/Response工厂 → 请求体为空、响应头丢失 -
routes.php或app.php手动引入顺序错 → 中间件不生效、CORS 失败
验证安装是否成功:跑一个最简 API 路由
编辑 src/AppFactory.php 后的 app 实例,或直接改 public/index.php(Slim 4/5 均适用):
$app = \Slim\Factory\AppFactory::create();
$app->get('/ping', function ($request, $response) {
return $response->withJson(['status' => 'ok', 'timestamp' => time()]);
});
$app->run();
访问 http://localhost:8000/ping 应返回 JSON;若报 Class "Slim\Factory\AppFactory" not found,说明你漏装了 Skeleton,不是只装了 slim/slim。
常见环境踩坑点
本地开发时最容易忽略的是 public/ 目录作为 Web 根目录的约束,以及 PHP 内置服务器的 -t 参数指向错误。
- 用
php -S时必须加-t public,否则index.php不在根路径,重写规则失效 - Apache 需启用
mod_rewrite并确保.htaccess在public/下(Skeleton 已自带) - Nginx 配置里
try_files $uri $uri/ /index.php?$query_string;必须写在location /块内,且root指向public/目录,不是项目根目录 - Windows 上 Composer 安装慢?换国内镜像:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
(注意:Slim 官方包在 packagist.org 主站同步及时,镜像可能延迟数小时)
真正麻烦的从来不是写路由,而是让请求第一秒就进到 $app->run() 里——路径、重写、PSR-7 实现、入口文件位置,四个点错一个,就卡在白屏或 404。










