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 = yiihelpersArrayHelper::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 yiidebugModule 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 – yiibaseInvalidParamException 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需要这些包… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |