You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

openapi-generator生成的Slim4部署在LAMP子目录报404错误求助

Slim4 子目录部署(openapi-generator生成场景)解决方案

核心问题是openapi-generator生成的Slim4项目的入口、路由加载逻辑和官方骨架不同,之前的配置没有适配生成代码的结构,按以下步骤调整即可:

  • 修正生成路径
    首先确认openapi-generator的输出路径和你的站点结构对齐,将生成命令调整为:
    openapi-generator-cli generate -i petstore.yaml -g php-slim4 -o /var/www/company1.com/app/api/
    确保生成的所有代码都在站点子目录/api下。

  • 调整basePath配置位置
    打开/var/www/company1.com/app/api/index.php,找到Slim实例初始化代码:

    $app = Slim\Factory\AppFactory::create();
    

    紧接着在该行之后、加载路由/中间件之前添加basePath配置:

    $app->setBasePath('/api');
    

    注意必须放在路由加载逻辑之前,否则配置不会生效。

  • 配置重写规则
    不需要额外创建public目录,直接在/var/www/company1.com/app/api/目录下创建.htaccess文件,内容如下:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [QSA,L]
    

    再检查站点根目录/var/www/company1.com/app/下的.htaccess,添加规则避免根目录重写拦截/api路径的请求:

    RewriteRule ^api/ - [L]
    
  • 验证路由规则
    打开生成的routes.php文件,确认路由没有重复的/api前缀:如果openapi定义的接口路径是/pet,生成的路由也为/pet则配置正确;如果生成的路由前缀自带/api,则删掉之前添加的setBasePath配置即可。

  • 测试访问
    不要直接访问https://company1.com/api,openapi生成的代码默认没有注册根路径/的路由,直接访问会返回404,属于正常现象。使用你openapi定义中存在的接口路径测试即可,比如https://company1.com/api/pet。

内容的提问来源于stack exchange,提问作者eestikul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 16:57:02