Пропустити вимогу композитора PHP


117

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

Для проекту ми додали Facebook PHP SDK, використовуючи композитор. Це вимагає 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?

Відповіді:


284

Я знайшов варіант:

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


Як я можу ігнорувати приватне сховище. Деякий пакет вимагає приватного репо.
dungphanxuan

Дивовижно. Це корисно, коли php cli ще не відображає зміну версії.
giovannipds

У Composer 2 є нова команда, якою можна скористатися: php.watch/articles/composer-ignore-platform-req
Armin

3

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

composer COMMAND --ignore-platform-reqs

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

Майте на увазі, що програмне забезпечення може працювати чи ні: специфікація версії php існує, оскільки десь у коді потрібна хоча б вказана версія php, тож якщо ви використовуєте цей код, програмне забезпечення порушиться.


--ignore-platform-reqsдоступна не для всіх команд, як випливає з вашої відповіді.
Армін

-11

Якщо що-небудь вимагає певної версії PHP, воно не працюватиме в нижчій версії PHP. Ви будете належним чином отримувати помилки, минаючи вимогу PHP.

Btw, 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.