将Symfony 4部署到Heroku

时间:2018-02-22 06:06:12

标签: php symfony heroku symfony4

我已经设置了一个新的symfony 4项目,我试图在heroku上部署。我已在本地成功设置并运行该应用程序。我基本上遵循了heroku tutorial here的指示。但是,本教程仅针对symfony版本2和3编写。

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

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

  

[autoindex:error] [pid 116:tid 139699079337728] [客户   10.5.228.216:17171] AH01276:无法提供目录/ app /:找不到匹配的DirectoryIndex(index.php,index.html,index.htm),以及   由Options指令

禁止的服务器生成的目录索引

我没有看到app文件夹,但我确实看到一个名为public的文件夹,其中包含一个索引文件。

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

3 个答案:

答案 0 :(得分:1)

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

  

web:vendor / bin / heroku-php-apache2 public /

答案 1 :(得分:0)

最佳解决方案是在存储库的根目录中创建Procfile, 具有以下内容:

  

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

答案 2 :(得分:0)

就我而言,我定义了一个具有以下内容的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上找到了解决方案)