作曲家:与您的要求或最低稳定性冲突

时间:2018-01-09 13:54:07

标签: php composer-php phpseclib

我试图在空目录中运行composer require phpseclib/mcrypt_compat:dev-master并收到以下错误:

./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for phpseclib/mcrypt_compat dev-master -> satisfiable by phpseclib/mcrypt_compat[dev-master].
    - phpseclib/mcrypt_compat dev-master requires phpseclib/phpseclib dev-master -> satisfiable by phpseclib/phpseclib[d
ev-master] but these conflict with your requirements or minimum-stability.


Installation failed, deleting ./composer.json.

我不明白这一点。 https://github.com/phpseclib/phpseclib/blob/master/composer.json表示所需的最低PHP版本为5.6.1。还有另外两个lib是必需的,但Composer并没有说那些其他的库是不相容的 - Composer说phpseclib / phpseclib是无法复制的。

这是我输入php -v时得到的输出:

PHP 7.0.26 (cli) (built: Nov 22 2017 13:19:37) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

PHP 7.0.26比PHP 5.6.1更新,这是phpseclib / phpseclib:dev-master的最小版本。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

创建一个指定了最小稳定性的composer.json文件:

{
     "require": {
         "phpseclib/mcrypt_compat": "dev-master"
      },
     "minimum-stability": "dev"
}

http://getcomposer.org/doc/04-schema.md#minimum-stability

如果未指定,最小稳定性默认为稳定。

答案 1 :(得分:1)

我想分享我的经验:

我正在创建一个包,并且在包composer.json文件中有"minimum-stability": "dev"。然后,当我添加新软件包时,几乎所有软件包都安装了dev版本。

稍后,当我想将此捆绑包集成到我的应用程序中时,我遇到了最小稳定性冲突错误。

我为摆脱这种情况所做的事情:

在我的捆绑包中:

  • 从composer.json中删除了"minimum-stability": "dev"
  • 删除了所有已安装的dev版本和composer require软件包名称的软件包(未指定任何版本),这导致仅安装稳定版本。

在我的应用中:

使用这些设置再次添加本地软件包

"repositories": [
        {
            "type": "path",
            "url": "../xyz-auth-bundle"
        }
    ]

"require": {
  ...
  "xyz/auth-bundle": "dev-master"
}

rm -rf var/cache/; composer update;一切正常。

更多要点:

应用程序composer.json:

  • 没有“最低稳定度”设置
  • “类型”:“项目”,

捆绑composer.json:

  • 未指定version

希望这可以节省某人的时间。

答案 2 :(得分:0)

如果您创建/更新了@Devon所述的composer.json到所需的版本,并且仍然看到此错误,则意味着您忘记更新composer.lock了:

php71 composer.phar update phpseclib/mcrypt_compat --no-progress