用 composer create-project slim/slim-skeleton myapi 才能构建可运行的轻量微服务,因为 global require 只安装全局 CLI 工具,不提供项目结构、PSR-7 实现、自动加载配置或入口文件,无法启动服务。

直接用 composer global require 构建轻量级 PHP 微服务开发环境,行不通。它只装命令行工具,不搭项目结构、不配 PSR-7、不生成入口文件——你得到的是一堆孤立的可执行文件,不是可运行的服务。
为什么 composer global require slim/slim 启动就报错
因为 Slim 4+ 不自带 PSR-7 实现,也不提供 public/index.php 或自动加载规则。你只装了核心包,但没装 nyholm/psr7,也没声明 autoload 映射,更没写路由入口。结果就是:
-
Class "PsrHttpMessageServerRequestInterface" not found—— 缺 PSR-7 实现 - 空白响应或 404 —— 请求根本没进任何 PHP 文件(
public/目录不存在) -
Call to undefined method AppFactory::create()——AppFactory在 Slim 4.12+ 中已移入slim/psr7,但你没装
composer global require 真正该干的事:装 CLI 工具,不是框架
它适合装那些你每天在终端里敲的独立命令,比如:
-
laravel/installer→ 提供laravel new myapp命令 -
deployer/deployer→ 提供dep命令 -
hyperf/hyperf-cli→ 提供hyperf命令行生成器
这些工具本身不参与你的微服务运行时,只是帮你初始化、部署或生成代码。它们的二进制文件被软链接到 ~/.composer/vendor/bin(Linux/macOS)或 %APPDATA%Composerendorin(Windows),但必须手动加进 PATH 才能用。
立即学习“PHP免费学习笔记(深入)”;
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
轻量微服务该从哪开始?用 create-project,不是 global require
要跑起来一个最小可行微服务,你应该用:
composer create-project slim/slim-skeleton myapi
这个命令做的事,global require 根本做不到:
- 拉取预配置的骨架,含
public/index.php+src/+routes.php - 自动安装
slim/slim+nyholm/psr7+nyholm/psr7-server(PHP 8.2+ 友好) - 预设
"autoload": {"psr-4": {"App\": "src/"}},无需手动dump-autoload - 开箱即用错误处理和路由,
php -S localhost:8000 -t public就能访问
如果你硬要用 global require 搭环境,最后只会陷入“装了十个包、写了三行代码、启动报七个错”的循环——因为你在用包管理器干架构初始化的活。
真正容易被忽略的一点:微服务的“轻量”,不取决于你装了多少全局命令,而取决于每个服务自身的 composer.json 是否只保留必要依赖、autoload 是否精准、PSR-7 实现是否选对(比如 nyholm/psr7 比 guzzlehttp/psr7 更快更省内存)。global require 对这些毫无影响。


















