我想在 symfony 3.4 中有一个应用程序,但在 v4 中有 symfony/dotenv。4.4.8 版本中的dotenv 包支持 symfony/process 3.4。
但是当我运行时composer update
,它会失败并且只列出 3.4.* 作为候选版本。这可能受以下限制extra.symfony.require
: 3.4.* in composer.json
.
我知道它至少在某些情况下有效。我在 symfony 3.4 中有一个项目,它使用symfony/http-client 4.3
. 这仅仅是因为没有旧版本才有效吗?
我在哪里可以找到有关依赖限制的更多信息symfony/flex
?
以下是我知道的一些来源:
- https://symfonycasts.com/screencast/symfony5-upgrade/version-constraints#symfony-flex-symfony-extra-require-is-a-soft-requirement
- https://github.com/symfony/flex/blob/master/README.md
- https://flex.symfony.com/
这是最清晰的一个:
什么时候extra.symfony.require
是软要求(来自 1. 的文本),这是什么意思?这是否与 4. 匹配?
composer.json
无法运行的示例composer require symfony/dotenv:^4.0
(使用创建symfony new --version=3.4
):
{
"type": "project",
"require": {
"php": "^7.0.8",
"ext-ctype": "*",
"ext-iconv": "*",
"symfony/console": "3.4.*",
"symfony/dotenv": "3.4.*",
"symfony/flex": "^1.3.1",
"symfony/framework-bundle": "3.4.*",
"symfony/yaml": "3.4.*"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"paragonie/random_compat": "2.*",
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "3.4.*"
}
}
}