composer Your PHP version does not satisfy that requirement Ошибка Решение

Текст ошибки:

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.5.9) does not satisfy that requirement.

Моя версия php (результат команды php -v):

PHP 7.1.9-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 2 2017 05:56:43) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.9-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies

В свойствах проекта в IDE стоит версия php 7.0.

Решение

Нужно было внимательнее рассмотреть файл composer.json
Видимо, начиная с определённой версии Symfony, в нём указывается параметр platform в разделе config:

 "config": {
        "platform": {
            "php": "7.1.3"
        },
        "sort-packages": true
    },

Необходимо и здесь исправить версию php на более позднюю.

vedro-compota's picture

Моя версия php (результат команды php -v):

это интерпретатор командной строки. А вот ваш веб-сервер (или удалённый боевой сервер) может работать с другой версией php. Единственный способ узнать это наверняка -- временно поправить какой-нибудь скрипт........
ОБНОВЛЕНО: все очень просто, скорее всего у вас действиельно на каком-либо сервере в командной строке стоит другой интерпретатор, так как композеру все равно с чем работает сервер, ведь он запускает именно командный (командной строки) интерпретатор для работы своих скриптов.

ОБНОВЛЕНО: Как выяснилось дело было в параметре platform

_____________
матфак вгу и остальная классика =)

melisa's picture

PHP Version 7.0.22-0ubuntu0.16.04.1

vedro-compota's picture

Видимо, начиная с определённой версии Symfony,

вот это конечно лучше проверить точнее, что это за параметр? композера или симфони?

Также надо указать на что на самом деле ругается композер -- и флаг
--ignore-platform-reqs -- что он инорирует -- требование php: или требование platform:?

В данный момент этот ответ скорее сбивает столку.

This package requires php >=7.1.3

почему написано "This package" -- надо по-хорошему понять какой это пакет. Или имеется ввиду весь проект.

_____________
матфак вгу и остальная классика =)

melisa's picture

  1. platform - параметр composer-a, но я написала
    Видимо, начиная с определённой версии Symfony

    , т.к. composer.json формировался им при установке

  2. О том, что игнорирует флаг, можно почитать в документации composer (ссылка есть в тексте статьи)
  3. This package requires php >=7.1.3

    Здесь под словом package подразумевается зависимость (строка "php": ">=7.1.3"), указанная в разделе require.

vedro-compota's picture

О том, что игнорирует флаг, можно почитать в документации (link is external) composer (ссылка есть в тексте статьи)

вот как раз у меня сомнения в том, что вы это прочитали) И замечание означает не то, что надо ещё раз кинуть мне ссылка, а то что вопрос надо раскрыть подробнее. Прокоменитровав зачем вообще нужна опция platform. Но я сделаю это за вас )).

Более того: выясните значем симфони таким образом эмулирует версию? Тем указывая столь старое значение.

Мой предыдущий комментарий сводился к тому, что вопрос раскрыт сумбурно (понятность - -процентов 60%) и вообще не производит впечатления понимания.

Ну и финал:

Но это не объясняет, почему composer видит на моём сервере версию php 5.5.9. К тому же, данный флаг придётся использовать при всех последующих запусках composer update.

Как раз-таки вот это всё объясняет)
После того как вы указали другую платформу, флаг вам больше не нужен.

_____________
матфак вгу и остальная классика =)

melisa's picture

да, второй вариант решения - т.н. костыль (на самом деле это был первый по хронологии вариант). Можно удалить его, чтобы не вводить в заблуждение тех, кто позднее будет интересоваться вопросом.

vedro-compota's picture

лучше было перенести его в комментарий

_____________
матфак вгу и остальная классика =)

melisa's picture
vedro-compota's picture

Здесь под словом package подразумевается зависимость (строка "php": ">=7.1.3"), указанная в разделе require.

а точнее весь ваш проект, ведь это для него указано:

"php": ">=7.1.3"

_____________
матфак вгу и остальная классика =)

melisa's picture

Возможно кому-нибудь понадобится...
Есть вариант игнорировать указанную платформу с помощью флагов:

composer install --ignore-platform-reqs

Описание в документации композера.

Но данный флаг придётся использовать при всех последующих запусках composer update.