Yii2错误:yiibaseUnknownMethodException:调用未知方法:yiiwebUr



在今天更新composer依赖项(使用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": "*"
},

我认为他们已经改变了通过composer加载某些库的方式。

解决方法:

添加到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

更多信息:在Github上发布和在Github上发布

全部归功于:@githubjeka和@SonicGD

以下是发生这种情况的原因解释:

我认为这又是作曲家依赖解析程序做了意想不到的事情:

  • 您在composer.json中需要yiisoft/yii2,但没有安装composer资产插件
  • 则依赖解析程序找不到与供应商bower-asset的包,因此它会查找没有冲突的yiisoft/yii2的其他版本
  • 结果是安装了要安装的yii2测试版

如前所述,正确的解决方案是安装composer资产插件:

php composer.phar global require "fxp/composer-asset-plugin:1.0.*@dev"

更新似乎完全错误,因为文件与github上的文件不同——缺少几个函数。

我必须做什么来"消除"这个错误:

将代码从存储库复制到本地文件中:

https://github.com/yiisoft/yii2/blob/master/framework/web/UrlManager.php

https://raw.githubusercontent.com/yiisoft/yii2/master/framework/helpers/BaseHtml.php

这暂时解决了我的问题。

正如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

ok我用这种方式解决了安装yii2的问题:

composer global需要"fxp/composer资产插件:1.0.*@dev"

composer创建项目--prefer dist--stability=dev yiisoft/yii2-app basic basic

尝试将您的composer.json更新为以下方式:

"require": {
    "yiisoft/yii2": "*"
},

在项目目录中,编写以下命令-

php composer.phar update

相关内容

  • 没有找到相关文章

最新更新