Pomiń wymagania PHP dla kompozytora

117

Używamy PHPCI i Composera. Serwer, na którym działa PHPCI, korzysta z PHP 5.3.

Do projektu dodaliśmy Facebook PHP SDK, używając narzędzia Composer. Wymaga PHP 5.4. Composer jest uruchamiany przez PHPCI i zostaje uruchomiony. Ale ponieważ serwer CI właśnie dostał kompozytor PHP 5.3 nie powiódł się z komunikatem o błędzie:

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

To oczywiście zawiodło moją kompilację w PHPCI.

Czy istnieje możliwość pominięcia tego wymogu? Może przez dodanie opcji do pliku composer.json? Lub parametr wywołania composer.phar?

Armin
źródło

Odpowiedzi:

284

Znalazłem opcję:

composer install --ignore-platform-reqs

Ignoruj ​​wymagania platformy (pakiety php i ext).


Edycja: Możesz pominąć sprawdzanie platformy w ten sposób, ale Composer pobierze wtedy pakiety na podstawie podanej wersji PHP. Więc jeśli potrzebujesz kompozytora do emulowania wersji PHP podczas rozwiązywania zależności, możesz (i powinieneś!) Użyć tego w swoim pliku composer.json:

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

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

Armin
źródło
Jak mogę zignorować prywatne repozytorium. Niektóre pakiety wymagają prywatnego repozytorium.
dungphanxuan
Niesamowite. Jest to przydatne, gdy php cli nie odzwierciedla jeszcze zmiany wersji.
giovannipds
W Composer 2 jest nowe polecenie, które można wykorzystać: php.watch/articles/composer-ignore-platform-req
Armin
3

W przypadku wielu poleceń można powiedzieć kompozytorowi, aby pominął sprawdzanie wersji php za pomocą parametru „ --ignore-platform-reqs”:

composer COMMAND --ignore-platform-reqs

spowoduje to ominięcie specyfikacji wersji php.

Należy pamiętać, że oprogramowanie może działać lub nie: specyfikacja wersji php jest tam, ponieważ gdzieś w kodzie potrzebna jest przynajmniej określona wersja php, więc jeśli użyjesz tego kodu, oprogramowanie się zepsuje.

Luca C.
źródło
--ignore-platform-reqsnie dotyczy wszystkich dostępnych poleceń, jak sugeruje twoja odpowiedź.
Armin
-11

Jeśli cokolwiek wymaga określonej wersji PHP, nie będzie działać w niższej wersji PHP. Prawidłowo nadal będziesz otrzymywać błędy podczas omijania wymagań PHP.

Przy okazji, PHP 5.3 nie jest już utrzymywane, zdecydowanie polecam aktualizację serwera PHPCI.

Wouter J.
źródło
3
Najpierw chciałbym wiedzieć, jak ominąć wymagania PHP.
Armin
Nie możesz i nie będziesz, ponieważ kod nie będzie działał w niższej wersji php
Wouter J
3
To będzie. Tylko serwer CI otrzymał niską wersję PHP. Serwer zawierający pakiet SDK Facebooka działa na PHP 5.4. Chodzi po prostu o serwer ci, który pakuje wszystko do ładnego pliku zip do wdrożenia.
Armin
Chociaż PHP 5.3 nie jest już utrzymywane przez głównych programistów PHP, niektóre wersje Linuksa nadal go obsługują i jeszcze przez jakiś czas będzie działać. Ubuntu 12.04 LTS jest dostarczany z wersją 5.3 i jest obsługiwany do kwietnia 2017 r. ( Wiki.ubuntu.com/LTS ). Przejście do 14.04 to najlepsza ścieżka aktualizacji, ale są tam istotne zmiany, które wymagają sporo pracy, aby je naprawić (Apache 2.4, php-fpm itp.). Stąd większość internetu nadal korzysta z 5.3.x.
Andrew McCombe,
prawda niestety 99% pakietów, nawet te dobrze obsługiwane, nie ma odpowiednich wymagań. Jest to bardziej wskaźnik tego, czego używa programista, niż cokolwiek innego.
mschuett