【发布时间】:2015-03-31 07:44:38
【问题描述】:
我需要一些帮助来在 Heroku 上设置 Yii2 高级应用程序。我已经使用 Composer 在本地安装了 Yii,完全按照他们的指南:http://www.yiiframework.com/doc-2.0/guide-tutorial-advanced-app.html
我的网站在本地可以正常运行,包括前端和后端:
http://localhost/yii2app/frontend/web/
http://localhost/yii2app/backend/web/
当我推送它并在 Heroku 上运行它时,我收到错误消息,抱怨找不到某些文件。奇怪的是,我的 Heroku 应用程序使用 bash 终端,我可以验证该文件是否确实存在! Heroku 不喜欢使用 '../../' 来更改目录吗?
PHP Fatal error: require(): Failed opening required '/app/frontend/web/../../common/config/main-local.php'
include_path='.:/app/.heroku/php/lib/php') in /app/frontend/web/index.php on line 12
在'frontend/web/index.php'中是Yii的股票代码(第12行是main-local.php):
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../../common/config/main.php'),
require(__DIR__ . '/../../common/config/main-local.php'),
require(__DIR__ . '/../config/main.php'),
require(__DIR__ . '/../config/main-local.php')
);
如果它与 '../../' 更改目录有关,那么我认为第一个要求会出错(对于 main.php 条目)。
在 Heroku 上运行 Yii2 高级版我缺少什么?
更新 - 我创建了一个新的 Yii2 基本应用。应该工作并且简单,所以我想。显然,即使是基本应用程序也不能在 Heroku 上运行。文档中必须有一些东西,某处......使用composer安装Yii2 basic,将其放在git下,将其推送到新的heroku堆栈。在heroku上查看我的应用程序,将/web/index.php添加到url的末尾。
ReflectionException
Class yii\debug\Module does not exist
然后我将 index.php 放在包含 phpinfo() 的根目录中。我可以确认我收到了一份 phpinfo 报告。所以 php 正在运行,它报告 PHP 5.6.5。
如果没有一些神奇的(和未记录的)技巧,Yii2 和 Heroku 似乎不能很好地发挥作用。我已经搜索,搜索,搜索,但我找不到任何关于此的信息。我不可能是唯一一个尝试在 Heroku 上安装 Yii 应用的人。
所以我尝试了 CloudControl。我将我的股票 Yii2 基本应用程序部署到 cloudcontrol,我再次获得关于根 index.php 的 phpinfo 报告。导航到 /web/index.php 并得到错误:
Invalid Parameter – yii\base\InvalidParamException
The file or directory to be published does not exist: /srv/www/code/vendor/bower/jquery/dist
什么给了!我可以在本地运行它就好了。当我将它推送到基于云的主机(Heroku 或 CloudControl)时,它失败了!我认为 yiibasic 应用程序至少让它为 PoC 运行会更好,但 Yii 开箱即用,不会在这些服务上运行。有东西没有提到我错过了。
【问题讨论】: