【问题标题】:Deploying Symfony 4 to Heroku将 Symfony 4 部署到 Heroku
【发布时间】:2018-08-01 21:44:31
【问题描述】:

我已经建立了一个新的 symfony 4 项目,我试图在 heroku 上进行部署。我已在本地成功设置并运行该应用程序。我基本上按照heroku tutorial here 的说明进行操作。但是,本教程仅针对 symfony 版本 2 和 3 编写。

我过去成功设置了一个 symfony 3 应用程序,我必须按照“最佳实践”部分中的说明创建一个 Procfile 将 heroku 服务器定向到web/ 目录。在这个 S4 安装中,我没有看到 web/ 文件夹,所以我没有创建 Procfile。 Heroku 在这种情况下使用默认命令。

我在 heroku config 中创建了 2 个配置变量:APP_ENV、SYMPHONY_ENV 都设置为 prod。我将应用程序部署到heroku,它全部部署成功,但是当我尝试访问该页面时,我只得到一个403 Forbidden。在日志中我得到了这个,这可能是正确的功能,因为我还没有编写任何代码:

[autoindex:error] [pid 116:tid 139699079337728] [client 10.5.228.216:17171] AH01276:无法提供目录 /app/:找不到匹配的 DirectoryIndex (index.php,index.html,index.htm),并且 选项指令禁止服务器生成的目录索引

我没有看到app 文件夹,但我确实看到了一个名为public 的文件夹,里面有一个索引文件。

有没有人有将 Symfony 4 的新版本部署到 Heroku 的经验,如果有,任何提示将不胜感激。谢谢!

【问题讨论】:

  • 你试过了吗?在 Symfony 4 中,公共根文件夹从“web”更改为“public”。
  • @LBA 我刚刚尝试过,并感谢它似乎有效的简单建议,尽管现在我得到了一个执行:PHP Fatal error: Uncaught Symfony\Component\Routing\Exception\NoConfigurationException in /app/var/cache/prod/srcProdProjectContainerUrlMatcher.php 这似乎没问题,因为我还没有配置任何东西这个heroku服务器应用程序设置为生产
  • 确实如此 - 所以只需继续,并在遇到困难时询问
  • @LBA 是的,谢谢,我为基本路由放入了控制器,并且该站点正常工作,看起来很傻。我应该早点尝试你的建议,但不知何故它似乎并不明显。谢谢。

标签: php symfony heroku symfony4


【解决方案1】:

在 Symfony 4 上,web 文件夹被替换为 public。您仍然需要创建 Procfile 文件并添加以下行:

网站:供应商/bin/heroku-php-apache2 public/

【讨论】:

    【解决方案2】:

    最好的解决方案是在存储库的根目录中创建一个Procfile, 内容如下:

    web: $(composer config bin-dir)/heroku-php-apache2 public/

    【讨论】:

      【解决方案3】:

      在我的例子中,我定义了一个包含以下内容的 Procfile:

      web: $(composer config bin-dir)/heroku-php-apache2 public/
      

      但这还不够,我不得不用composer安装apache-pack:

      composer require apache-pack (using symfony flex) or composer require symfony/apache-pack
      

      (我在heroku-buildpack-php repository找到了解决方案)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-08
        • 2018-03-26
        • 2018-03-20
        • 2021-04-28
        • 1970-01-01
        • 2018-11-06
        • 2018-10-22
        • 1970-01-01
        相关资源
        最近更新 更多