【问题标题】:Laravel 5.4 not working on PHP 7.0 due to Doctrine package由于 Doctrine 包,Laravel 5.4 无法在 PHP 7.0 上运行
【发布时间】:2017-08-28 21:10:06
【问题描述】:

我正在尝试在 AWS PHP 7.0 实例(Elastic Beanstalk,但这并不重要)上部署 Laravel 应用程序。

我收到以下错误

+ 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)

任何想法如何在 PHP 7.0 上抑制或绕过它?

我的 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
}

附:我没有使用任何单元测试。我试图摆脱“require-dev”包,但仍然是同样的错误。

【问题讨论】:

  • 为什么要部署开发依赖?这是测试环境吗?如果没有,请运行composer install --no-dev。见getcomposer.org/doc/03-cli.md#install
  • 在我看来,您在每次更改 composer.json 之间并没有摆脱您的 composer.lock 文件?如果存在 composer.lock 文件,composer install 不会查看 composer.json,是吗?线索是你说你已经从 composer.json 中摆脱了你的 phpunit 依赖,但它仍然在“错误”消息中被提及(间接地)。

标签: php laravel amazon-web-services laravel-5 php-7


【解决方案1】:

错误是“composer.lock”存在,在这种情况下运行“composer install”会发生什么?

是时候再次运行 composer install 了。这一次,Composer 会看到你的目录中有一个 composer.lock 文件。相反,它不会找到兼容版本的依赖项来满足 composer.json 文件,而是安装您的 composer.lock 文件中定义的依赖项的确切版本。 (https://laravel-news.com/understanding-the-composer-lock-file)

【讨论】:

    猜你喜欢
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 2019-01-18
    • 2017-07-24
    相关资源
    最近更新 更多