Композитор: переопределить транзитивную зависимость от версии PHP

Я работаю над проектом, который использует guzzlehttp/guzzle.

В то время как наши производственные серверы используют PHP 5.4, наш блок сборки по-прежнему работает на 5.3, поэтому, когда он запускает composer install, мы видим следующую ошибку:

guzzlehttp/guzzle 4.2.x-dev requires php >=5.4.0 -> no matching package found.

Есть ли способ переопределить это? Я требую php 5.3 «как» 5.4.0, но затем он жаловался, что пакет «php» не может быть найден.

Кажется, что требование версии PHP является особым случаем пакета и не допускает тех же переопределений, которые предусмотрены для обычных пакетов. Есть ли способ обойти это?


person Ross McFarlane    schedule 01.09.2014    source источник


Ответы (1)


Я не знаю, как обойти это.

Проблема в том, как Composer должен знать о PHP, который должен выполнять код, в отличие от PHP, который просто захватывает свои зависимости. В настоящее время нет способа переопределить версии PHP или установленные расширения.

И где это переопределение должно быть помещено? Неправильно помещать его в composer.json, потому что это изменит обнаруженную версию PHP, которую предполагает Composer, и приведет к конфликтам. Вероятно, это должна быть какая-то конфигурация локального экземпляра Composer, которая используется для переопределения предполагаемой версии PHP.

Я бы посоветовал обновить вашу сборку до версии 5.4 или установить дополнительную версию PHP 5.4, которая используется только для Composer.

Как вы обнаружите конфликты версий в этом блоке сборки во время выполнения теста, если вы не используете версию PHP, которая должна запускать код?

person Sven    schedule 01.09.2014