2015-09-29 6 views
16

Ich versuche, Laravel 5.1 auf einem Host zu installieren, der nur PHP 5.5.6 hat. Während ich den Kunden um ein Upgrade gebeten habe, ist dies möglicherweise nicht möglich.PHP-Basis-Abhängigkeit in Composer überschreiben

So erhalte ich:

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

auf composer.phar install.

Gibt es eine Möglichkeit, eine Composer-Installation durchzuführen, die diese Abhängigkeit ignoriert?

Ich denke, es sollte sicher sein, da es nur Bug-Fixes von 5.5.6 bis 5.5.9 gibt.

+0

Das Laravel Projekt leider entschieden, dass sie erklären ihre Version 5.1 kompatibel zu den ältesten verfügbaren PHP-Version laufen sie mit auf TravisCI testen können, die 5.5.9 ist. Auf der einen Seite ist dies eine vernünftige Wahl. Auf der anderen Seite ist es eine unnötige Hürde für Leute, die auf älteren Releases des 5.5 PHP-Zweiges laufen, da es keine rückwärtskompatiblen Änderungen in PHP 5.5 vor 5.5.9 gibt - der Code wird laufen. Das Problem mit '--ignore-platform-req' ist, dass es ALLE Pakete betrifft, Sie könnten Pakete bekommen, die nur mit PHP 5.6 laufen. – Sven

Antwort

23

Die Fehlermeldung eine Anforderung von der Haupt composer.json anzeigt. Die Version Anforderung kann nur Adapter sein:

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

Nach der Version wie folgt zu ändern, erhalte ich:

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]. 

in composer.json folgenden Ausschnitt verwenden, kann eine PHP-Version

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

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

Plattform

Hier können Sie gefälschte Plattform Pakete (PHP und Erweiterungen), so dass Sie eine Produktions env emulieren kann oder Ihre Zielplattform in der Config definieren. Beispiel: {"php": "5.4", "ext-something": "4.0"}.

Vergessen Sie nicht, eine composer.phar update nach diesem

+0

Ich ging durch den Abschnitt "Plattform", las ihn aber nicht sorgfältig. So einfach :) Ich habe Ihrer Antwort ein Doc-Zitat hinzugefügt. –

+1

Die Simulation des hier erwähnten Plattformpakets hilft auch, wenn Ihre Basis-PHP eine andere Version als die Version ausführt, auf der der Code ausgeführt wird. Beispiel: Einer meiner Plesk-Server hat eine PHP-Basisversion von 5.3.x, der Code für die virtuelle Site läuft unter 5.4.x. Ohne diese Option greift ein zentral installierter Composer nur auf die Basisversion zu. Dies kann zu Problemen bei der Verwendung eines Pakets führen, das von einer anderen PHP-Version abhängig ist. –

+0

Gibt es eine Möglichkeit, dies über CLI zu tun? So etwas wie 'composer install --config platform.php 5.3.3' – Starx

47

Sie --ignore-platform-reqs Option für Komponist Befehle wie install verwenden können, update usw.

--ignore-Plattform-reqs: ignorieren php, HHVM, lib * und EXT- * Anforderungen und erzwingen Sie die Installation, auch wenn die lokale Maschine diese nicht erfüllt. Siehe auch die Plattformkonfigurationsoption.

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

Sie können also versuchen, mit

composer install --ignore-platform-reqs 
+0

Gibt es auch eine feinkörnigere Methode, die nur die PHP-Version ignoriert? Oder ich kann sogar 5.5.6 anstelle von 5.5 verlangen.9 – Alex

+0

Ich glaube nicht, dass es so etwas gibt. Zumindest kann ich es nicht finden. –

+0

Einen Weg gefunden. War direkt in den Dokumenten. Funktioniert jedoch nur für Unterpakete. Siehe meine Antwort. – Alex