我需要一些帮助在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上运行时,出现了一些文件找不到的错误。很奇怪的是,通过bash终端访问我的Heroku应用程序,我可以验证该文件确实存在!难道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')
);
如果问题与'../../'更改目录有关,则我认为第一个require语句将出现错误(针对main.php入口)。
我错过了什么,以使Yii2高级版在Heroku上运行?
更新 - 我创建了一个新的Yii2基本应用程序。 应该可以工作并且很简单,所以我认为。 显然,即使是基本应用程序也无法在Heroku上运行。 文档中肯定有遗漏之处... 使用composer安装Yii2 basic,将其放入git下,将其推送到新的heroku堆栈。 转到Heroku上检查我的应用程序,在URL末尾添加/web/index.php。ReflectionException
Class yii\debug\Module does not exist
我将index.php放在根目录,并包含phpinfo(),确认获得了phpinfo报告。因此,php正在运行,并显示PHP 5.6.5。
看起来Yii2和Heroku需要一些神奇(并且未记录的)技巧才能良好地协同工作。我已经搜索了很久,但找不到任何相关信息。我不可能是唯一一个试图将Yii应用程序部署到Heroku上的人。
于是我尝试使用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从头开始,在这些服务中都无法运行。有一些未提及的东西我可能漏掉了。
composer.json
中,将yiisoft/yii2-debug
包移动到require中。此外,您可能还需要移动yiisoft/yii2-gii
。 - Nedim