У меня в composer.json есть такое требование:
"php": ">= 5.6",
"symfony/http-foundation": "^3.0"
Проблема с этой конфигурацией в том, что она установит paragonie/random_compat v9.99.99, который совместим только с PHP 7 и другими. Но дело в том, что я не хочу, чтобы мой файл composer.lock требовал PHP 7, я хочу, чтобы он по-прежнему был совместим с PHP 5.6.
Решение, которое я нашел, состоит в том, чтобы отследить, какой пакет вытаскивал эту зависимость, и, как только я ее нашел, я добавил это к своим требованиям:
"paragonie/random_compat": "~2.0"
Но мне интересно, нет ли лучшего способа сделать это: каким-то образом сказать, что я принимаю все версии выше PHP 5.6, но не принимаю пакеты, которые заставили бы установить PHP 7?
Это из моего проекта (github.com/MightyCreak/mesamatrix/blob/master/composer.json)





Если вы хотите сделать composer.lock совместимым с PHP 5.6, у вас есть как минимум два варианта для этого:
Используйте PHP 5.6 для composer update - вы сможете установить несколько версий PHP в своей ОС и запустить Composer следующим образом:
/path/to/php6.5 /path/to/composer update
Используйте настройки platform в composer.json для принудительной установки для конкретной версии независимо от версии PHP, используемой для запуска команд Composer:
"config": {
"platform": {
"php": "5.6.38"
}
},
Это
composer.jsonвашего проекта или просто библиотека / зависимость?