Пропустить требование композитора PHP

117

Мы используем PHPCI и композитор. Сервер, на котором работает PHPCI, находится на PHP 5.3.

Для проекта мы добавили Facebook PHP SDK, используя composer. Требуется PHP 5.4. Композитор запускается PHPCI и запускается. Но из-за того, что сервер CI только что получил композитор PHP 5.3, выдает сообщение об ошибке:

facebook/php-sdk-v4 4.0.9 requires php >=5.4.0 -> no matching package found.

Это, конечно, привело к провалу моей сборки в PHPCI.

Есть ли возможность пропустить это требование? Может быть, добавив опцию в composer.json? Или параметр для вызова composer.phar?

Armin
источник

Ответы:

286

Нашел вариант:

composer install --ignore-platform-reqs

Игнорировать требования к платформе (пакеты php и ext).


Изменить: вы можете пропустить проверку платформы, но тогда Composer будет извлекать пакеты на основе данной версии PHP. Поэтому, когда вам нужно, чтобы композитор также имитировал версию PHP во время разрешения зависимостей, вы можете (и должны!) Использовать это в своем composer.json:

{
    "config": {
       "platform": {
           "php": "5.6.6"
       }
    }
}

https://getcomposer.org/doc/06-config.md#platform

Armin
источник
Как я могу игнорировать частный репозиторий. Некоторые пакеты требуют частного репо.
dungphanxuan
Потрясающие. Это полезно, когда php cli еще не отражает изменение версии.
giovannipds
В Composer 2 есть новая команда, которую можно использовать: php.watch/articles/composer-ignore-platform-req
Армин
4

Для многих команд вы можете указать композитору обойти проверку версии php с помощью параметра " --ignore-platform-reqs":

composer COMMAND --ignore-platform-reqs

это обойдет спецификацию версии php.

Имейте в виду, что программное обеспечение может работать или нет: спецификация версии php существует, потому что где-то в коде требуется, по крайней мере, указанная версия php, поэтому, если вы используете этот код, программное обеспечение сломается.

Лука К.
источник
--ignore-platform-reqsне для всех доступных команд, как следует из вашего ответа.
Армин
-11

Если что-то требует определенной версии PHP, она не будет работать в более ранней версии PHP. Вы по-прежнему будете получать ошибки при обходе требований PHP.

Кстати, PHP 5.3 больше не поддерживается, я настоятельно рекомендую обновить сервер PHPCI.

Воутер Дж
источник
3
Сначала я хотел бы знать, как обойти требование PHP.
Армин
Вы не можете и не будете, поскольку код не будет работать в более низкой версии php
Wouter J
3
Так и будет. Просто CI-сервер получил младшую версию PHP. Сервер, содержащий SDK facebook, работает на PHP 5.4. Речь идет как раз о ci-сервере, который упаковывает все в хороший развертываемый zip-файл.
Армин
Хотя PHP 5.3 больше не поддерживается основными разработчиками PHP, некоторые разновидности Linux все еще поддерживают его, и еще некоторое время будут работать. Ubuntu 12.04 LTS поставляется с версией 5.3 и поддерживается до апреля 2017 года ( wiki.ubuntu.com/LTS ). Переход на 14.04 - лучший способ обновления, но есть критические изменения, для исправления которых требуется много работы (Apache 2.4, php-fpm и т. Д.). Следовательно, большая часть Интернета все еще использует версию 5.3.x.
Эндрю МакКомб
правда, к сожалению, 99% пакетов, даже хорошо поддерживаемые, не имеют соответствующих требований. Это больше показатель того, что использует разработчик, чем что-либо еще.
mschuett