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

Elastic Beanstalk部署Laravel文档根目录路径重复问题求助

解决方案

方案1:修正Document Root配置(无需修改管道)

报错显示路径重复/var/www/html/var/www/html/web/public,说明你在EB控制台设置的document-root用了绝对路径(带开头的/),导致EB默认根路径/var/www/html与你设置的路径叠加。

解决步骤:

  • 进入Elastic Beanstalk控制台,找到目标环境,进入配置 > 软件
  • 在Document root字段填写相对路径web/public(不要带开头的/)
  • 保存配置并触发重新部署

如果控制台设置仍不生效,可通过.ebextensions强制修改nginx配置:

  1. 在仓库根目录创建.ebextensions/nginx-root.config文件
  2. 写入以下内容:
files:
  "/etc/nginx/conf.d/elasticbeanstalk/00_application.conf":
    content: |
      server {
          listen 80;
          server_name localhost;
          root /var/www/html/web/public;
          index index.php index.html index.htm;

          location / {
              try_files $uri $uri/ /index.php?$query_string;
          }

          location ~ \.php$ {
              fastcgi_pass php-fpm;
              fastcgi_index index.php;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include fastcgi_params;
          }
      }
  1. 提交代码到BitBucket,触发重新部署

方案2:修改BitBucket管道,仅部署Laravel根目录(推荐)

通过管道将仓库内的/web目录作为部署工件,使EB部署后/var/www/html直接成为Laravel根目录,此时只需将document-root设为public即可正常运行。

配置BitBucket Pipelines步骤:

  1. 在仓库根目录创建bitbucket-pipelines.yml文件
  2. 写入以下配置(根据你的PHP版本、EB信息调整):
image: php:8.1-cli

pipelines:
  branches:
    main:  # 替换为你需要部署的分支名
      - step:
          name: 打包Laravel代码
          deployment: production
          script:
            - apt-get update && apt-get install -y zip
            # 进入web目录打包所有内容,确保解压后直接是Laravel根结构
            - cd web && zip -r ../laravel-deploy.zip .
          artifacts:
            - laravel-deploy.zip
      - step:
          name: 部署到Elastic Beanstalk
          deployment: production
          script:
            - pipe: atlassian/aws-elasticbeanstalk-deploy:1.0.0
              variables:
                AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
                AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
                AWS_DEFAULT_REGION: $AWS_REGION  # 替换为你的EB区域,如us-east-1
                APPLICATION_NAME: "你的EB应用名称"
                ENVIRONMENT_NAME: "你的EB环境名称"
                ZIP_FILE: "laravel-deploy.zip"
  1. 在BitBucket仓库设置 > 存储库变量中添加AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_REGION三个变量(需赋予EB部署权限)
  2. 提交代码触发管道部署,之后回到EB控制台将Document root设置为public,保存并重新部署

关于Full Clone的CodeBuild错误

切换Full Clone时的错误,是因为EB环境默认启用了CodeBuild作为构建工具,但你未配置对应CodeBuild项目。若使用方案2的BitBucket管道部署,无需开启Full Clone,保持默认快速部署即可;若必须使用Full Clone,需确保已创建并关联正确的CodeBuild项目,但这种方式无必要,推荐用方案2的管道部署更直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:31:00