Composer无法直接安装Swagger,因Swagger是OpenAPI规范而非PHP包;应安装zircote/swagger-php(注解生成)或nelmio/api-doc-bundle(Symfony专用),并手动集成Swagger UI。

Composer 本身不提供 Swagger 文档生成功能,所谓“Composer 安装 Swagger”实际是安装支持 OpenAPI 规范的 PHP 工具链,不是装一个叫 swagger 的包。
为什么 composer require swagger 会失败
因为没有名为 swagger 的官方 PHP 包。Swagger 是一套规范(现称 OpenAPI),不是可直接 install 的工具。常见错误是搜索 “swagger php composer” 后盲目执行不存在的命令,结果报错:Could not find package swagger 或 Package not found。
真正要装的是实现 OpenAPI 解析/生成的库,主流有两个:
-
zircote/swagger-php:用 PHPDoc 注解生成 OpenAPI JSON/YAML,适合代码即文档场景 -
nelmio/api-doc-bundle:Symfony 专用,自动聚合控制器注解 + 路由,输出 Swagger UI
zircote/swagger-php 的最小可用配置
它靠解析 PHP 文件里的特殊注解(如 @OA\Get)来生成文档,不依赖框架,但需要手动触发生成命令。
实操步骤:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer require zircote/swagger-php - 在项目根目录建
openapi.php,内容为:<?php require 'vendor/autoload.php'; $openapi = \OpenApi\scan(['src']); file_put_contents('openapi.yaml', $openapi->toYaml()); - 给某个控制器方法加注解,例如:
/** * @OA\Get( * path="/users", * @OA\Response(response="200", description="OK") * ) */
- 执行
php openapi.php,生成openapi.yaml
注意:注解必须写在 PHPDoc 块里,且类/方法需被 \OpenApi\scan() 扫到;src 路径要和实际代码位置一致。
Symfony 项目别硬套原生 swagger-php
如果你用 Symfony,zircote/swagger-php 能用,但得自己处理路由映射、参数绑定、安全定义——这些 nelmio/api-doc-bundle 都已封装好。
推荐做法:
- 装
composer require nelmio/api-doc-bundle - 配好
config/packages/nelmio_api_doc.yaml,至少指定areas: {default: {path_patterns: [^/api/.*$]}} - 访问
/api/doc.json或/api/doc(带 UI)即可看到文档
坑点:Bundle 默认只扫描 Controller 目录下带 @Route 的方法;如果用了 API Platform,它自带文档,再装 Nelmio 会冲突。
最常被忽略的一点:生成的 YAML/JSON 只是描述文件,要交互式 UI 还得额外部署 Swagger UI 或 use swagger-api/swagger-ui 静态资源——这步和 Composer 完全无关,别指望 composer install 自动给你弹出网页。

















