在Heroku上运行我的Symfony应用程序:“在“服务器”名称空间中未定义任何命令。”

时间:2019-06-04 16:41:58

标签: heroku symfony4

好,所以这是我在任何论坛上遇到的第一个问题,但我会尽量保持清楚... 我已经在Symfony上工作了一段时间,无论是在工作中还是在家里进行个人项目。但是,到目前为止,我从未部署过任何应用程序。我选择了Heroku来部署我的个人Symfony项目,并且按照文档中的说明进行了每个步骤: 1.我创建一个Heroku应用 2.我将其链接到本地​​存储库 然后我做了:

heroku config:set SYMFONY_ENV=prod

这还不足以使构建成功,所以我不得不这样做

heroku config:set APP_ENV=prod

但是它最终以任何方式部署

然后我用JAWSDB设置数据库,然后运行:

heroku run "php bin/console doctrine:migrations:migrate"

我现在可以访问结构正确的产品数据库,因此我知道我的代码可以正常工作

那是什么问题?我的应用程序的网址显示404,无论使用什么端点,当我尝试从前端本地应用程序访问它时(毕竟是API ),我都有一个CORS问题,因此“选项”请求返回200,然后不返回任何内容。我知道这与CORS无关,因为我将它们设置为接受*。

问题是,我认为我的应用程序未在Heroku上运行...我从来没有告诉过Heroku如何运行它,因此这是合乎逻辑的

我没有使用过docker ,所以我告诉heroku的唯一一条信息是以下命令:

echo 'web: $(composer config bin-dir)/heroku-php-apache2 public/' > Procfile

我不完全确定它的作用,但我认为这与我的问题无关

所以我想我应该从heroku bash启动服务器,然后运行:

heroku run "php bin/console server:start"

考虑到“ php bin /控制台服务器:启动”是我局部启动的方式,这看起来是一件好事

但是我遇到了这个错误:在“服务器”名称空间中没有定义任何命令。

我在Internet上进行了查找,最后发现有关此命令在产品环境中不可用的说明...

我完全不知道如何在heroku上运行我的应用程序,并且考虑到所有教程似乎都假设您只需要部署和打开一个事实,我什至不知道我在寻找什么。

我看不到我想念的东西,这就是我决定在StackOverflow上写这篇第一篇很长(很抱歉)文章的原因

感谢您阅读全文,

科林

1 个答案:

答案 0 :(得分:0)

所以这行:

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

告诉Heroku运行Apache并将其指向public目录。该服务器(或Heroku也支持的另一台网络服务器,例如nginx),是php bin/console server:start(生产的替代品,正如您所发现的,仅用于本地开发)。

在Heroku上,您根本不需要server:start。如果在确保已将Procfile添加和部署为存储库的一部分之后,应用程序仍未运行,则说明还有其他事情。

Heroku提供了documentation for getting a Symfony app running。确保您已按照他们的步骤进行。