Ошибка Laravel 5.6 + cPanel + Composer: использование неправильного PHP, хотя установлена ​​версия 7.2

Я пытаюсь установить Laravel 5.6 в песочнице cPanel, и у меня возникает странное поведение, когда композитор пытается использовать PHP 5.6, даже если установлена ​​версия 7.2. Вот подробности:

# composer --version
Composer version 1.1.1 2016-05-17 12:25:44

Команда which php ничего не возвращает. Но когда я делаю alias, я получаю следующее:

alias php='/usr/local/bin/ea-php72'

И если я запускаю php -v, я вижу

# php -v
PHP 7.2.4 (cli) (built: Apr  4 2018 00:56:46) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

Я собираюсь предположить, что это работает. Как вы понимаете, у меня очень мало опыта работы с Laravel на cPanel, но я отвлекся.

Вот ошибка:

# composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - This package requires php ^7.1.3 but your PHP version (5.6.35) does not satisfy that requirement.
  Problem 2
    - laravel/framework v5.6.9 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.8 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.7 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.6 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.5 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.4 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.3 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.2 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.15 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.14 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.13 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.12 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.11 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.10 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.1 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.0 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework 5.6.x-dev requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - laravel/framework v5.6.15 requires php ^7.1.3 -> your PHP version (5.6.35) does not satisfy that requirement.
    - Installation request for laravel/framework 5.6.* -> satisfiable by laravel/framework[5.6.x-dev, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.2, v5.6.3, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9].

Теперь я нашел тему, в которой говорится о добавлении платформы в composer.json:

"platform": {
    "php": "7.1.3"
}

Это позволило мне установить пакеты моего поставщика, но, очевидно, это не решение, поскольку вы просто подделываете платформу (я думаю). Когда приходит время действительно использовать php7, я получаю следующую ошибку при нулевом операторе объединения, который является функцией php 7, и поэтому он все еще пытается использовать php5.6.

> Illuminate\Foundation\ComposerScripts::postAutoloadDump

Parse error: syntax error, unexpected '?' in /public_html/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 233

Дополнительные примечания:

phpinfo() - PHP Version 7.2.4
php.ini - /opt/cpanel/ea-php72/root/etc
core PHP Version 7.2.4

# /usr/bin/env php -v
ea-php-cli Copyright 2017 cPanel, Inc.
PHP 5.6.35 (cli) (built: Apr  4 2018 00:55:31)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Мой требуемый composer.json выглядит следующим образом:

"require": {
    "php": "^7.1.3",
    "edujugon/laravel-google-ads": "^1.4",
    "fideloper/proxy": "^4.0",
    "laravel/framework": "5.6.*",
    "laravel/tinker": "^1.0"
}

Любые идеи о том, как я могу это исправить?


person LaziTurtle    schedule 05.04.2018    source источник


Ответы (2)


какая у вас версия php указана в файле composer.json? убедитесь, что это выглядит так

 "require": {
        "php": "^7.1.3",
        "darkaonline/l5-swagger": "5.6.*",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "5.6.*",
        "laravel/tinker": "^1.0"
    },

или вы можете попробовать одно из этих решений 1) попробуйте переустановить php на своем сервере 2) вы можете игнорировать такие зависимости composer install --ignore-platform-reqs

person mobeen    schedule 05.04.2018

Как оказалось, решение в конечном итоге заключалось в том, что нам нужно было изменить общесерверную версию php по умолчанию на 7.2, что мы и сделали. Поскольку у нас есть общий хостинг, мы установили все предыдущие существующие сайты по умолчанию локально на 5.6, а в дальнейшем для любой установки Laravel будет установлено значение 7.2. Не уверен, что это лучшее решение, но оно определенно сработало.

person LaziTurtle    schedule 07.04.2018