Php SilverStripe/cms的SilverStripe composer版本问题

Php SilverStripe/cms的SilverStripe composer版本问题,php,composer-php,dependency-management,silverstripe,Php,Composer Php,Dependency Management,Silverstripe,我想使用SilverStripe模块“sheadawson/SilverStripe blocks dev master”。当我用composer安装它时,我需要安装一些模块,比如multivaluefield等等。我安装它们没有问题。现在我得到以下终端输出: Pascal@Nemesis:~/Sites/xyz$ composer require sheadawson/silverstripe-blocks dev-master ./composer.json has been updated

我想使用SilverStripe模块“sheadawson/SilverStripe blocks dev master”。当我用composer安装它时,我需要安装一些模块,比如multivaluefield等等。我安装它们没有问题。现在我得到以下终端输出:

Pascal@Nemesis:~/Sites/xyz$ composer require sheadawson/silverstripe-blocks dev-master
./composer.json has been updated
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 silverstripe/cms 1.0.0 -> satisfiable by silverstripe/cms[1.0.0].
- sheadawson/silverstripe-blocks dev-master requires silverstripe/cms 3.1.* -> satisfiable by silverstripe/cms[3.1.0, 3.1.1, 3.1.2].
- Can only install one of: silverstripe/cms[3.1.0, 1.0.0].
- Can only install one of: silverstripe/cms[3.1.1, 1.0.0].
- Can only install one of: silverstripe/cms[3.1.2, 1.0.0].
- Installation request for sheadawson/silverstripe-blocks dev-master -> satisfiable by sheadawson/silverstripe-blocks[dev-master].
我可以看到,3.1.*依赖性导致了3个可能的版本。但是cms的1.0.0版本让我有点纠结,因为我对这个版本没有任何依赖

当我想用安装3.1.2版时

composer require silverstripe/cms 3.1.2
我得到以下输出:

Pascal@Nemesis:~/Sites/xyz$ composer require silverstripe/cms 3.1.2
./composer.json has been updated
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 silverstripe/cms 1.0.0 -> satisfiable by silverstripe/cms[1.0.0].
- Can only install one of: silverstripe/cms[3.1.2, 1.0.0].
- Installation request for silverstripe/cms 3.1.2 -> satisfiable by silverstripe/cms[3.1.2].
my composer.json文件的内容如下所示:

{
    "name": "silverstripe/cms",
    "type": "silverstripe-module",
    "description": "The SilverStripe Content Management System",
    "homepage": "http://silverstripe.org",
    "license": "BSD-3-Clause",
    "keywords": ["silverstripe", "cms"],
    "authors": [
        {
            "name": "SilverStripe",
            "homepage": "http://silverstripe.com"
        },
        {
            "name": "The SilverStripe Community",
            "homepage": "http://silverstripe.org"
        }
    ],
    "require": {
        "php": ">=5.3.2",
        "ajshort/silverstripe-gridfieldextensions": "dev-master",
        "silverstripe/multivaluefield": "dev-master"
    }
}

有人知道composer为什么也想安装cms的1.0.0版吗?我已经尝试删除所有模块、清理composer.json、删除composer.lock、composer更新以及我想到的所有其他内容。

您的composer.json看起来确实是来自CMS的文件,而不是您自己的软件

如果是这样的话,作曲家感到困惑也就不足为奇了。在composer.json中,您声明“silverstripe/cms”是您的软件。如果您将软件标记为版本1.0.0,则创建了“silverstripe/cms 1.0.0”-任何需要更高版本的软件现在都无法工作

通常,如果开始使用Composer,最好在软件的主目录中运行
Composer init
,然后以交互方式回答有关软件的一些问题

在最基本的情况下,创建一个空文件
composer.json
,添加一对大括号,然后填写“require”键和所需的软件


您永远不应该做的事情:从其他人那里复制composer.json而不修复所有问题。我不知道您是如何获取当前版本的,但我猜您可能克隆了一些存储库来启动项目。这并不是完全错误,但应该有人改进工作流程,以避免与Composer发生冲突。

感谢您提供了正确方向的提示。第一次失败后,我从cms(在silversripe的子文件夹中)复制了composer.json并使用了它。删除所有模块、供应商文件夹并创建一个干净的composer.json后,所有模块现在都已安装,没有任何问题。谢谢