2017-10-17 16 views
0

J'essaye d'installer un plus vieux projet de Laravel.Laravel Composer voit faux PHP Version

Quand je lance compositeur installe je reçois l'erreur suivante

This package requires php >=5.6.4 but your PHP version (5.5.35) does not satisfy that requirement. 

Quand je lance

php -v 

-je obtenir le résultat suivant

PHP 7.1.10 (cli) (built: Oct 12 2017 14:00:12) (ZTS) 

Ceci est le contenu de mon compositeur .json

{ 
    "name": "laravel/laravel", 
    "description": "The Laravel Framework.", 
    "keywords": ["framework", "laravel"], 
    "license": "MIT", 
    "type": "project", 
    "require": { 
     "php": ">=5.6.4", 
     "doctrine/dbal": "^2.6", 
     "guzzlehttp/guzzle": "^6.3", 
     "intervention/image": "^2.4", 
     "intervention/imagecache": "^2.3", 
     "laravel/framework": "5.4.*", 
     "laravel/tinker": "~1.0", 
     "laravelcollective/html": "^5.4", 
     "maatwebsite/excel": "^2.1", 
     "sentry/sentry-laravel": "^0.8.0", 
     "spatie/laravel-glide": "^3.2", 
     "spatie/laravel-permission": "^2.6", 
     "spatie/laravel-pjax": "^1.3" 
    }, 
    "require-dev": { 
     "fzaninotto/faker": "~1.4", 
     "mockery/mockery": "0.9.*", 
     "phpunit/phpunit": "~5.7" 
    }, 
    "autoload": { 
     "classmap": [ 
      "database" 
     ], 
     "psr-4": { 
      "App\\": "app/" 
     } 
    }, 
    "autoload-dev": { 
     "psr-4": { 
      "Tests\\": "tests/" 
     } 
    }, 
    "scripts": { 
     "post-root-package-install": [ 
      "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" 
     ], 
     "post-create-project-cmd": [ 
      "php artisan key:generate" 
     ], 
     "post-install-cmd": [ 
      "Illuminate\\Foundation\\ComposerScripts::postInstall", 
      "php artisan optimize" 
     ], 
     "post-update-cmd": [ 
      "Illuminate\\Foundation\\ComposerScripts::postUpdate", 
      "php artisan optimize" 
     ] 
    }, 
    "config": { 
     "preferred-install": "dist", 
     "sort-packages": true, 
     "optimize-autoloader": true 
    } 
} 

Comment est-il possible que ce projet pense que j'ai PHP 5.6 en cours d'exécution?

Merci.

+0

Quel environnement utilisez-vous, Homestead? Essayez et supprimez votre fichier composer.lock et exécutez à nouveau –

+1

Vous avez probablement plus d'une version de PHP installée sur votre système et votre serveur Web est configuré pour utiliser 5.5.35. Vérifiez les fichiers de configuration de votre serveur Web. –

+0

@JoshGriggs c'est juste Laravel Valet. – Notflip

Répondre

1

J'ai aussi eu ce problème. Si vous ne souhaitez pas mettre à jour tous vos packages composeur, vous pouvez résoudre ce problème en modifiant manuellement le fichier composer.lock et en écrivant votre version réelle de PHP dans platform > php dans l'objet JSON.

Exemple

... 
"platform": { 
    "php": "7.1" 
} 
... 

Bien qu'il fonctionne, la façon la plus recommandée pour le faire supprimerions votre fichier composer.lock, changer la version platform > php dans composer.json puis exécuter composer install.

+0

C'est une bonne solution! Mieux que de mettre à jour je suppose. J'ai toujours peur que quelque chose se casse après une mise à jour – Notflip

+0

C'est une bonne solution! Merci pour info gd.silva. @Notflip Je pense que ma réponse fonctionne également pour vous? –

+0

Oui, la mise à jour de tout n'est pas la meilleure option dans la plupart des situations. –

0

Lorsque vous installer ancien projet Laravel alors il vous suffit de lancer la commande est:

composer update

Cela mettra à jour toutes les dépendances qui est définie dans le fichier composer.json, et lorsque vous installez un nouveau projet de Laravel, vous devez utiliser:

composer install

Si vous voulez changer php version, il suffit de vérifier à l'aide phpinfo() , cela vous donne la version php parfaite qui est utilisée dans votre serveur local!

Espérons que cela vous aide et que vous comprenez !!

+0

Je ne sais pas si cela est vrai .. Mise à jour met à jour les dépendances à la nouvelle version dans leurs contraintes, non? Install installe juste les versions actuelles, qui devraient normalement aussi fonctionner sur des projets plus anciens? – Notflip

+0

Oui, vous avez raison. –

1

C'est un problème de config/env. vous pouvez idéalement avoir plusieurs versions de php pour tester avec, en apache vous pouvez échanger des versions comme ceci:

Example: 
sudo a2dismod php5.6 
sudo a2enmod php7.0 
sudo service apache2 restart 

Ce qui est qui se passe ici est quand il court php -v il est en cours d'exécution php-cli qui est configuré pour fonctionner en php7 , mais peut-être son apache a 5.5 activé. alors

sudo a2dismod php5.5 
sudo a2enmod php7.0 
sudo service apache2 restart