Symfony5环境下Swagger UI无法从指定路径加载问题求助
问题排查解决步骤
- 路径校验(最常见原因)
你当前的api.php位于public/resources/documentation/api/目录下,原有路径配置存在两处错误:- 自动加载文件路径错误:
require("vendor/autoload.php")默认会从api.php所在目录下寻找vendor目录,而实际vendor位于项目根目录,需要修改为:
require(__DIR__ . '/../../../../vendor/autoload.php');- 注解扫描路径错误:原有
__DIR__ . '/../../src/Controller/Api'实际指向的是public/resources/src/Controller/Api,并非项目根目录下的src目录,修改为:
$openapi = \OpenApi\Generator::scan([__DIR__ . '/../../../../src/Controller/Api']); - 自动加载文件路径错误:
- 直接校验接口返回内容
直接在浏览器访问你配置的api.php完整地址,查看返回结果:- 如果返回PHP报错信息,按照报错内容修正对应问题即可
- 如果返回404页面,说明你的Web服务器配置将所有请求转发到了Symfony的前端控制器
public/index.php,需要调整Nginx/Apache配置,允许已存在的PHP文件直接执行 - 如果返回合法的JSON格式内容,再进行下一步排查
- 注解兼容性适配
如果你使用的是zircote/swagger-php4.x及以上版本,默认优先读取PHP原生属性注解#[OA\...],如果你使用的是传统注释式注解/** @OA\... */,需要在扫描时添加解析配置:$openapi = \OpenApi\Generator::scan( [__DIR__ . '/../../../../src/Controller/Api'], ['parser' => new \OpenApi\Parser\StaticParser()] ); - 注解语法校验
确认所有Controller的注解语法符合规范,没有遗漏必填属性、拼写错误等问题,任何注解语法错误都会导致Generator::scan方法抛出异常,无法生成合法的OpenAPI JSON。
内容的提问来源于stack exchange,提问作者bjhonna
相关产品推荐
相关产品推荐

