php – 在Heroku上设置Yii2 Advanced

前端之家收集整理的这篇文章主要介绍了php – 在Heroku上设置Yii2 Advanced前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要一些帮助,在Heroku上设置Yii2高级应用程序.我已经安装了Yii本地使用Composer,按照他们的指南: 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条目).

我得不到Yii2高级运行在Heroku?

更新 – 我创建了一个新的Yii2基本的应用程序.应该工作和简单,所以我想.显然,即使是基本的应用程序也不会在Heroku上运行.必须从文档中删除某些东西…使用的作曲者安装Yii2基本,将其放在git下,将其推送到一个新的英雄堆栈.想看看我的应用程序在heroku,添加/web/index.PHP到URL的末尾.

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.PHPPHPinfo报告.导航到/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开箱即用,不会在这些服务中运行.有一点我没有提到的东西.

最后,在几个小时之后,我搞清楚了.那我还有一个问题,我需要测试(再试一次).然而,我设法获得在Heroku上运行的yii基本和yii高级应用程序.但是,尽管CloundControl仍然有错误,但这是另一天.

我的composer.json文件中缺少2个条目.我不知道为什么这些不包括在Yii文档中,如果它们在生产中是必需的.这是我的要求块(我没有编辑require-dev部分,只需要):

"fxp/composer-asset-plugin": "*","ext-gd": "*"

作曲家资产插件是绝对必需的.联系我们页面需要GD扩展名(我假设验证码).我也针对YII_DEBUG定义了web / index.PHP中的前两行.一旦我这样做,更新的作曲家,更新git和推,魔术发生了:)

我不认为他们通知您,您需要编辑web / index.PHP以在Yii2文档中删除它们.似乎他们只想让你去开发.是的索引文件评论,但我们需要知道看看那里!如果不删除它们,Yii将加载您不需要的调试工具.我假设Heroku收到推送,它从“require”块运行作曲家.

至于高级模板..前端和后端的index.PHP文件已经具有正确的开发和生产的调试常数.你只需要在服务器上运行PHP init –env = Production –overwrite = All(我不能得到heroku来做这个,但是另外一天). Yii文档可以运行init,然后选择开发.这需要从“environments / dev”文件夹中的所有内容,并在应用程序的位置覆盖它们.在开发过程中会失败.因此,您必须将其切换到生产环境,将生产文件移动到使用中.我明白为什么你会有这些,所以我得到它..像我说的,我尝试heroku运行bash,然后运行PHP init –env =生产–overwrite =所有从应用程序目录,但似乎没有开关.所以我的应用程序缺少前端/ web / index.PHP文件,还有更多.

我想知道如何’frontend / web / index.PHP’甚至没有在目录中,但进一步检查我看到许多目录有gitignore文件.所以当你推送英雄大师’,’前端/ web / index.PHP’连同其他的,永远不会推挤,因为它们被忽略.所以因为我不能让Heroku运行Yii的初始化生产,我的文件不在那里.

简单的修复,让我运行在Heroku与Yii高级(包括添加2提到的包到composer.json):我删除了所有的gitignore文件,运行init选择生产,更新git,并推送到heroku.它运行:)

现在我需要弄清楚如何让init为我做这个,所以我不必删除gitignore文件.

对于这个问题,解决了这个问题. Heroku可以运行Yii2基本和高级.我看到的最大的问题是Yii文档没有必要的作曲家包在生产中运行.所以我想知道是否只是Heroku需要这些包…

猜你在找的PHP相关文章