2015-09-29 26 views
16

Cerco di installare Laravel 5.1 su un host che ha solo PHP 5.5.6. Mentre ho chiesto al cliente di aggiornare, questo potrebbe non essere possibile/fattibile.Override dipendenza base PHP in compositore

Così sto ottenendo:

- This package requires php >=5.5.9 but your PHP version (5.5.6) 
    does not satisfy that requirement. 

su composer.phar install.

C'è un modo per eseguire un'installazione di compositore che ignori questa dipendenza?

Penso che dovrebbe essere sicuro, in quanto vi sono solo correzioni di bug da 5.5.6 a 5.5.9.

+0

Il progetto laravel purtroppo ha deciso che dichiarino la loro versione 5.1 compatibile con la più vecchia versione di PHP disponibili possono testare con il TravisCI, che è 5.5.9. Da un lato questa è una scelta ragionevole. D'altra parte è un ostacolo non necessario per le persone che girano su versioni precedenti del ramo PHP 5.5, perché non ci sono modifiche incompatibili all'indietro in PHP 5.5 prima della 5.5.9 - il codice verrà eseguito. Il problema con '--ignore-platform-req' è che interessa TUTTI i pacchetti, potresti ottenere pacchetti che funzionano solo con PHP 5.6. – Sven

risposta

23

Il messaggio di errore indica un requisito dalla principale composer.json. Il requisito versione può essere solo adattatore:

"require": { 
    "php": ">=5.5", 

Dopo aver modificato la versione in questo modo ottengo:

Problem 1 
    - Installation request for classpreloader/classpreloader 2.0.0 -> satisfiable by classpreloader/classpreloader[2.0.0]. 
    - classpreloader/classpreloader 2.0.0 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement. 
    Problem 2 
    - Installation request for laravel/framework v5.1.17 -> satisfiable by laravel/framework[v5.1.17]. 
    - laravel/framework v5.1.17 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement. 
    Problem 3 
    - Installation request for laravelcollective/html v5.1.6 -> satisfiable by laravelcollective/html[v5.1.6]. 
    - laravelcollective/html v5.1.6 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement. 
    Problem 4 
    - laravel/framework v5.1.17 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement. 
    - jenssegers/agent v2.1.7 requires illuminate/support ~4.0|~5.0 -> satisfiable by laravel/framework[v5.1.17]. 
    - Installation request for jenssegers/agent v2.1.7 -> satisfiable by jenssegers/agent[v2.1.7]. 

Utilizzando il seguente frammento in composer.json, una versione di PHP può essere simulato

[...] 
"config": { 
    "preferred-install": "dist", 
    "platform": { 
     "php": "5.5.9" 
    } 
} 

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

piattaforma

consente di pacchetti piattaforma falso (PHP e estensioni) in modo da poter emulare un env di produzione o di definire la piattaforma di destinazione nella configurazione. Esempio: {"php": "5.4", "ext-something": "4.0"}.

Non dimenticare di eseguire un composer.phar update dopo questo

+0

Ho seguito la sezione 'platform' ma non l'ho letto attentamente. Così semplice :) Ho aggiunto la citazione del doc alla tua risposta. –

+1

La simulazione del pacchetto della piattaforma menzionato qui aiuta anche se il PHP di base sta eseguendo una versione diversa della versione su cui è in esecuzione il codice. Ad esempio, uno dei miei server che eseguono Plesk ha una versione PHP base di 5.3.x, il codice per il sito virtuale è in esecuzione su 5.4.x. Senza questo, un compositore installato centralmente preleva solo sulla versione di base, quindi può creare problemi quando si tenta di utilizzare un pacchetto dipendente da una diversa versione di PHP –

+0

C'è un modo per farlo dalla CLI? Qualcosa come "installer install --config platform.php 5.3.3' – Starx

47

È possibile utilizzare l'opzione per i comandi --ignore-platform-reqs compositore come install, update ecc

--ignore-platform-reqs: ignorare php, hhvm, liberatore * e EXT-requisiti * e forzare l'installazione anche se la macchina locale non soddisfa questi requisiti. Vedi anche l'opzione di configurazione della piattaforma.

https://getcomposer.org/doc/03-cli.md

modo da poter provare con

composer install --ignore-platform-reqs 
+0

C'è anche un metodo più fine che ignora solo la versione di PHP? O posso persino richiedere 5.5.6 invece di 5.5.9 – Alex

+0

Non penso che ci sia una cosa del genere. Almeno non riesco a trovarlo. –

+0

Trovato un modo. Era direttamente lì nei documenti. Ma funziona solo per i pacchetti secondari. Vedi la mia risposta. – Alex

Problemi correlati