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

在Heroku部署Sylius时路由异常问题求助

Sylius部署至Heroku后访问出现500错误的排查与解决

问题描述

尝试将Sylius部署至Heroku,多次尝试均未成功。Heroku活动日志显示部署完成,但访问应用URL时出现500异常(截图:500错误截图)。

相关访问日志:

2023-08-18T20:51:38.659916+00:00 heroku[router]: at=info method=GET path="/en_US/" host=creativedss-6e8e6463e6bc.herokuapp.com request_id=784e6ab0-8e79-4ac2-8dc3-7dbae6506bd6 fwd="110.174.122.237" dyno=web.1 connect=0ms service=23ms status=500 bytes=1204 protocol=https
2023-08-18T20:51:38.661457+00:00 app[web.1]: 10.1.43.231 - - [18/Aug/2023:20:51:38 +0000] "GET /en_US/ HTTP/1.1" 500 1027 "https://dashboard.heroku.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36

现有配置:

  • Procfile内容:
web: heroku-php-nginx -C nginx_app.conf public/
  • nginx_app.conf内容:
location / {
    # try to serve file directly, fallback to rewrite
    try_files $uri @rewriteapp;
}

location @rewriteapp {
    # rewrite all to index.php
    rewrite ^(.*)$ /index.php/$1 last;
}

location ~ ^/index\.php(/|$) {
    try_files @heroku-fcgi @heroku-fcgi;
    # ensure that /index.php isn't accessible directly, but only through a rewrite
internal;
}

排查思路与解决办法

1. 获取详细错误日志

当前日志仅显示500状态,无具体错误原因,需查看PHP/FPM的完整错误输出:

  • 执行命令:heroku logs --tail --app creativedss-6e8e6463e6bc,持续观察访问应用时的日志,定位具体错误(如数据库连接失败、缓存未生成、依赖缺失等)。

2. 校验环境变量配置

Sylius依赖大量环境变量,确保以下关键项正确设置:

  • DATABASE_URL:确认Heroku自动生成的数据库链接是否与Sylius配置兼容
  • APP_ENV=prod、APP_DEBUG=0:生产环境需关闭调试模式
  • APP_SECRET:必须手动配置,可通过本地执行php bin/console secrets:generate-keys生成后添加到Heroku环境变量
  • 邮件、存储等其他业务所需配置项

3. 确认部署后初始化命令已执行

Sylius生产环境部署需要执行初始化步骤,需确保这些命令自动运行:

  • 数据库迁移:php bin/console doctrine:migrations:migrate --no-interaction
  • 资产安装与编译:php bin/console assets:install public --symlink、yarn install && yarn build(使用Webpack Encore时)
  • 缓存清理与预热:php bin/console cache:clear --env=prod、php bin/console cache:warmup --env=prod

可在composer.json的scripts中添加自动执行脚本:

"scripts": {
    "post-install-cmd": [
        "@auto-scripts",
        "php bin/console doctrine:migrations:migrate --no-interaction",
        "php bin/console assets:install public --symlink",
        "php bin/console cache:warmup --env=prod"
    ]
}

4. 调整Nginx配置

当前Nginx配置的internal指令可能影响Sylius路由重写,尝试修改index.php相关配置块:

location ~ ^/index\.php(/|$) {
    try_files $uri $uri/ /index.php?$query_string;
    fastcgi_pass heroku-fcgi;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}

同时确认public/目录下的index.php文件存在且权限正常。

5. 验证生产环境依赖

执行命令确保依赖完整安装:

heroku run composer install --no-dev --optimize-autoloader --app creativedss-6e8e6463e6bc

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:43:30