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

将Symfony 4应用部署至AWS Elastic Beanstalk遇问题求助

解决Symfony 4.0.1 + PHP 7.1.14部署到AWS Elastic Beanstalk的问题

嘿,你这情况明显踩了两个核心坑:平台环境不兼容和部署配置缺失,我来一步步帮你理顺解决:


1. 先搞定最致命的问题:平台完全不对

你当前的EB环境用的是Tomcat 8 + Java 8的平台,但你的应用是PHP写的Symfony啊!Tomcat是跑Java程序的,根本不认识PHP代码,这就是首次部署后全页面404的根源——服务器压根没在处理你的PHP请求。

因为你没有控制台权限,要么找环境管理员把平台换成对应PHP版本的(比如arn:aws:elasticbeanstalk:us-east-2::platform/PHP 7.1 running on 64bit Amazon Linux/2.7.7,和你当前环境的Amazon Linux版本匹配),要么试试用EB CLI修改平台:

eb config set platform "arn:aws:elasticbeanstalk:us-east-2::platform/PHP 7.1 running on 64bit Amazon Linux/2.7.7"

2. 切换PHP平台后,修复部署配置

平台换对了,接下来解决composer.phar: command not found的问题,同时配置Symfony的运行环境,按下面的步骤来:

2.1 先让服务器装上Composer

在项目根目录新建.ebextensions文件夹,然后创建01_composer_setup.config文件,内容如下:

commands:
  # 检查是否已安装Composer,没有就装
  01_install_composer:
    command: |
      cd /tmp
      curl -sS https://getcomposer.org/installer | php
      mv composer.phar /usr/local/bin/composer
    test: '[ ! -f /usr/local/bin/composer ]'

container_commands:
  # 部署时安装项目依赖(你本地删了vendor,所以必须在服务器装)
  01_install_deps:
    command: composer install --no-dev --optimize-autoloader
    cwd: /var/app/staging

2.2 配置Apache指向Symfony的入口目录

Symfony的入口文件在public文件夹,但EB默认的PHP平台文档根是/var/app/current,所以得改Apache配置,新建02_apache_docroot.config:

files:
  "/etc/httpd/conf.d/symfony.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      <Directory /var/app/current/public>
          AllowOverride All
          Require all granted
      </Directory>
      DocumentRoot /var/app/current/public

container_commands:
  # 重启Apache让配置生效
  01_restart_apache:
    command: sudo service httpd restart

这个配置会让Apache把请求导向Symfony的public目录,同时允许.htaccess生效(Symfony靠这个处理路由)。

2.3 配置Symfony的环境变量(必须项)

Symfony需要APP_ENV和APP_SECRET这些环境变量才能正常运行,你可以新建03_env_vars.config来设置:

option_settings:
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: APP_ENV
    value: prod
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: APP_SECRET
    value: 你的项目实际密钥

记得把你的项目实际密钥换成你Symfony项目里的真实密钥。


3. 最后调整部署流程

  1. 确保你的master分支里没有vendor、var/cache、var/logs这些不需要提交的文件(用.gitignore管控好)。
  2. 用EB CLI重新部署:
eb deploy

4. 万一还有问题的排查点

  • 要是还是404,用eb logs看Apache的日志,确认文档根是不是真的改成public了。
  • 要是Composer装依赖失败,检查服务器能不能访问getcomposer.org,或者在composer命令里加国内镜像:composer install --no-dev --optimize-autoloader --repo-url=https://packagist.phpcomposer.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:29:04