推荐安装方式是composer create-project slim/slim-skeleton,直接require slim/slim会因缺少psr-7实现、错误目录结构和入口文件导致class not found、空白页等错误。

composer create-project slim/slim-skeleton 是唯一推荐的安装方式,跳过它等于主动掉进坑里。
为什么不能只 composer require slim/slim
Slim 不是“装上就能跑”的单库,它依赖 PSR-7 实现、特定目录结构和预设入口文件。直接 require slim/slim 后自己写 index.php,90% 的人会在 5 分钟内遇到:
- Class "PsrHttpMessageServerRequestInterface" not found
- 空白页,无报错
- Call to undefined method getServerParams()
根本原因:Slim 5 彻底移除对任何 PSR-7 库的硬绑定,而 Slim 4 默认也不自带——你得自己选、自己装、自己注册。
- 想最小化安装?必须同步装
nyholm/psr7(轻快、PHP 8.2+ 兼容):composer require slim/slim:^4.13 nyholm/psr7 - 别碰
laminas/laminas-diactoros:PHP 8.2+ 下有已知兼容问题 - 若用
php-di/php-di容器,必须调用SlimFactoryAppFactory::createFromContainer($container),否则容器不生效
运行前必须确认的三件事
装完骨架 ≠ 能访问,本地启动失败大多卡在这三点:
-
public/必须是 Web 根目录:PHP 内置服务器要加-t public,否则请求进不了public/index.php - 重写规则必须生效:Apache 依赖
.htaccess(骨架已自带),Nginx 需配try_files $uri $uri/ /index.php?$query_string - PHP 版本必须匹配:
Slim 4≥ PHP 7.4;Slim 5≥ PHP 8.1 —— 运行php -v和composer show slim/slim交叉验证
微服务场景下最危险的默认行为
Slim 默认开启 displayErrorDetails = true,开发时方便,但上线后会把完整堆栈、文件路径、甚至数据库凭证(如果误打日志)直接吐给上游服务——这在微服务调用链中等于裸奔。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 务必关掉:
$app->setBasePath('/'); $app->addErrorMiddleware(false, true, false); - 必须加日志中间件,把错误写入文件或集中日志系统,而不是返回 HTTP 响应体
- 容器部署时注意 Alpine 权限问题:用
su-exec www-data启动,别用chown -R暴力修复
常见错误现象与对应检查点
看到这些表现,不用猜,按顺序查:
-
zlib_decode(): data error→ Composer 缓存损坏:composer clear-cache -
proc_open(): fork failed(Windows)→ 别在 WSL 或 Docker 终端里跑,换 CMD/PowerShell -
Class 'AppApp' not found→ 检查composer.json是否有"autoload": {"psr-4": {"App\": "src/"}},且执行过composer dump-autoload - 路由 404 但入口能访问 → 检查
public/.htaccess是否启用,或 Nginxtry_files是否漏写
实际项目里,最常被忽略的是 PSR-7 实现和 Web 根目录的耦合关系——不是框架不工作,而是请求根本没走到 Slim 的路由层。










