今天更新了作曲家依赖关系(使用composer update命令)后,我的Yii2应用程序崩溃了 - 它抛出未知方法 - yii \ base \ UnknownMethodException:调用未知方法:yii \ web \ UrlManager :: addRules()< /强>
在检查 vendor / yiisoft / yii2 / web / UrlManager.php 文件后,我发现没有方法addRule。 整个类 UrlManager 与存储库中的类不同。
我的composer.json:
"minimum-stability": "dev",
"require": {
"php": ">=5.4.0",
"yiisoft/yii2": "*",
"yiisoft/yii2-bootstrap": "*",
"yiisoft/yii2-swiftmailer": "*",
"yiisoft/yii2-gii": "2.0.0-beta",
"claudejanz/yii2-mygii": "*",
"kartik-v/yii2-grid": "dev-master",
"kartik-v/yii2-builder": "dev-master",
"2amigos/yii2-switch-widget": "*",
"yiisoft/yii2-jui": "*",
"DsXack/yii2-underscore": "*",
"2amigos/yii2-editable-widget": "*",
"warrence/yii2-kartikgii": "*"
},
"require-dev": {
"yiisoft/yii2-codeception": "*",
"yiisoft/yii2-debug": "*"
},
答案 0 :(得分:13)
我认为他们已经改变了通过作曲家加载某些库的方式。
要解决它:
添加到composer.json
"extra": {
"asset-installer-paths": {
"npm-asset-library": "vendor/npm",
"bower-asset-library": "vendor/bower"
}
}
并运行:
# php composer.phar global require "fxp/composer-asset-plugin:1.0.*@dev"
# php composer.phar update --dev
更多信息:Issue on Github和Issue on Github
完全归功于:@githubjeka和@SonicGD
答案 1 :(得分:12)
Here解释了为什么会发生这种情况:
我认为这又是作曲家依赖解析器做出意想不到的事情:
- 你的composer.json中需要
yiisoft/yii2
,但没有安装composer资产插件。- 然后依赖项解析程序找不到包含供应商
bower-asset
的包,因此它会查找没有冲突的其他版本的yiisoft/yii2
- 结果是安装要安装的测试版yii2
如前所述,正确的解决方案是安装composer-asset-plugin:
php composer.phar global require "fxp/composer-asset-plugin:1.0.*@dev"
答案 2 :(得分:1)
似乎更新完全错误,因为文件与github上的文件不同 - 缺少几个函数。
我必须做些什么来摆脱&#34;摆脱&#34;这个错误:
从本地文件中的存储库中复制代码:
https://github.com/yiisoft/yii2/blob/master/framework/web/UrlManager.php
https://raw.githubusercontent.com/yiisoft/yii2/master/framework/helpers/BaseHtml.php
这暂时解决了我。
答案 3 :(得分:1)
像ricardgf说的那样,请阅读:
https://github.com/yiisoft/yii2/blob/master/docs/guide/start-installation.md
然后运行:
composer.phar global require "fxp/composer-asset-plugin:1.0.*@dev"
和
composer.phar update --prefer-source --no-interaction
答案 4 :(得分:1)
好吧我解决了以这种方式安装yii2的问题:
composer global需要“fxp / composer-asset-plugin:1.0。* @ dev”
composer create-project --prefer-dist --stability = dev yiisoft / yii2-app-basic basic
答案 5 :(得分:-4)
尝试按以下方式更新您的composer.json:
"require": {
"yiisoft/yii2": "*"
},
在项目目录中,编写此命令 -
php composer.phar update