Salta il requisito PHP del compositore


117

Stiamo usando PHPCI e composer. Il server che esegue PHPCI è su PHP 5.3.

Per un progetto abbiamo aggiunto l'SDK PHP di Facebook, utilizzando il compositore. Richiede PHP 5.4. Composer viene attivato da PHPCI e viene eseguito. Ma poiché il server CI ha appena ricevuto il compositore PHP 5.3 non riuscito con il messaggio di errore:

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

Questo ovviamente ha fatto fallire la mia build in PHPCI.

C'è la possibilità di saltare questo requisito? Magari aggiungendo un'opzione a composer.json? O un parametro per chiamare composer.phar?

Risposte:


284

Ho trovato l'opzione:

composer install --ignore-platform-reqs

Ignora i requisiti della piattaforma (pacchetti php ed ext).


Modifica: puoi saltare i controlli della piattaforma con questo, ma Composer recupererà i pacchetti in base alla versione PHP data. Quindi, quando hai bisogno che il compositore emuli anche una versione PHP durante la risoluzione delle dipendenze, puoi (e dovresti!) Usarlo nel tuo composer.json:

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

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


Come posso ignorare il repository privato. Alcuni pacchetti richiedono un repository privato.
dungphanxuan

Eccezionale. È utile quando php cli non riflette ancora un cambio di versione.
giovannipds

In Composer 2 c'è un nuovo comando, che può essere usato: php.watch/articles/composer-ignore-platform-req
Armin

3

Per molti comandi, puoi dire al compositore di ignorare il controllo della versione di php, con il parametro " --ignore-platform-reqs":

composer COMMAND --ignore-platform-reqs

questo bypasserà la specifica della versione di php.

Tieni presente che il software può funzionare o meno: la specifica della versione php è presente perché da qualche parte nel codice è necessaria almeno la versione php specificata, quindi se usi quel codice il software si romperà.


--ignore-platform-reqsnon è per tutti i comandi disponibili, come suggerisce la tua risposta.
Armin

-11

Se qualcosa richiede una versione specifica di PHP, non funzionerà in una versione precedente di PHP. Riceverai comunque correttamente gli errori quando aggiri il requisito PHP.

A proposito, PHP 5.3 non è più mantenuto, consiglio vivamente di aggiornare il server PHPCI.


3
Per prima cosa vorrei sapere come bypassare il requisito PHP.
Armin

Non puoi e non lo farai perché il codice non funzionerà in una versione php inferiore
Wouter J

3
Lo farà. Solo il server CI ha ottenuto la versione PHP bassa. Il server che contiene l'SDK di Facebook funziona su PHP 5.4. Si tratta solo del server ci, che racchiude tutto in un bel file zip distribuibile.
Armin

Sebbene PHP 5.3 non sia più mantenuto dagli sviluppatori PHP principali, alcune versioni di Linux lo supportano ancora e lo faranno ancora per un po '. Ubuntu 12.04 LTS viene fornito con 5.3 ed è supportato fino ad aprile 2017 ( wiki.ubuntu.com/LTS ). Il passaggio alla 14.04 è il miglior percorso di aggiornamento, ma ci sono modifiche importanti che richiedono una quantità di lavoro per essere risolte (Apache 2.4, php-fpm ecc.). Quindi gran parte di Internet utilizza ancora 5.3.x.
Andrew McCombe

true purtroppo il 99% dei pacchetti, anche quelli ben supportati, non hanno i requisiti appropriati. È più un indicatore di ciò che lo sviluppatore sta utilizzando che altro.
mschuett
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.