2017-08-28 3 views
0

J'essaie de déployer une application Laravel sur une instance AWS PHP 7.0 (Elastic Beanstalk, mais cela n'a pas vraiment d'importance).Laravel 5.4 ne fonctionne pas sur PHP 7.0 en raison du paquet Doctrine

je reçois l'erreur suivante

+ composer.phar install --no-ansi --no-interaction 
Do not run Composer as root/super user! See https://getcomposer.org/root for details 
Loading composer repositories with package information 
Installing dependencies (including require-dev) from lock file 
Your requirements could not be resolved to an installable set of packages. 

    Problem 1 
    - Installation request for doctrine/instantiator 1.1.0 -> satisfiable by doctrine/instantiator[1.1.0]. 
    - doctrine/instantiator 1.1.0 requires php ^7.1 -> your PHP version (7.0.16) does not satisfy that requirement. 
    Problem 2 
    - doctrine/instantiator 1.1.0 requires php ^7.1 -> your PHP version (7.0.16) does not satisfy that requirement. 
    - phpunit/phpunit-mock-objects 3.4.4 requires doctrine/instantiator ^1.0.2 -> satisfiable by doctrine/instantiator[1.1.0]. 
    - Installation request for phpunit/phpunit-mock-objects 3.4.4 -> satisfiable by phpunit/phpunit-mock-objects[3.4.4]. 
(Executor::NonZeroExitStatus) 

Toute idée comment puis-je supprimer ou contourner ce sur PHP 7.0?

Mon composer.json

{ 
    "name": "myapp", 
    "description": "My App.", 
    "keywords": ["framework", "laravel", "lumen"], 
    "license": "MIT", 
    "type": "project", 
    "require": { 
     "php": ">=5.6.4", 
     "laravel/lumen-framework": "5.4.*", 
     "vlucas/phpdotenv": "~2.2", 
     "romanpitak/nginx-config-processor": "^0.2.1", 
     "symfony/stopwatch": "^3.2", 
     "comodojo/zip": "^2.1", 
     "riimu/kit-pathjoin": "1.*", 
     "aws/aws-sdk-php": "^3.25", 
     "spatie/url": "dev-master" 
    }, 
    "require-dev": { 
     "fzaninotto/faker": "~1.4", 
     "phpunit/phpunit": "~5.0", 
     "mockery/mockery": "~0.9" 
    }, 
    "autoload": { 
     "psr-4": { 
      "App\\": "app/" 
     } 
    }, 
    "autoload-dev": { 
     "classmap": [ 
      "tests/", 
      "database/" 
     ] 
    }, 
    "scripts": { 
     "post-root-package-install": [ 
      "php -r \"copy('.env.example', '.env');\"" 
     ] 
    }, 
    "minimum-stability": "dev", 
    "prefer-stable": true 
} 

P.S. Je n'utilise aucun test unitaire. J'ai essayé de me débarrasser des paquets "require-dev" et toujours la même erreur.

+0

Pourquoi déployez-vous des dépendances de développement? Est-ce un environnement de test? Si ce n'est pas le cas, exécutez 'composer install --no-dev'. Voir https://getcomposer.org/doc/03-cli.md#install. – localheinz

+1

Il me semble que vous ne vous débarrassez pas de votre fichier composer.lock entre chaque changement de composer.json? 'composer install' ne regarde pas composer.json si un fichier composer.lock est présent, n'est-ce pas? L'idée est que vous dites que vous vous êtes débarrassé de votre dépendance phpunit de composer.json, mais cela est toujours mentionné dans le message "error" (indirectement). –

Répondre

1

Le bug était que "composer.lock" existait, que se passe-t-il lorsque nous exécutons "composer installer" dans ce cas?

Il est temps d'exécuter à nouveau l'installation de composer. Cette fois, Composer verra que vous avez un fichier composer.lock dans le répertoire. Au lieu de trouver des versions compatibles de vos dépendances pour remplir le fichier composer.json, il va installer la version exacte de vos dépendances comme défini dans votre fichier composer.lock. (https://laravel-news.com/understanding-the-composer-lock-file)