PHP 7.2 выдает запуск "композитор требует symfony/dotenv", 7.1 - нет

Приложение Symfony 4.2, созданное (и работающее) на PHP 7.1, при переключении на 7.2 выбрасывает

Fatal error: Uncaught RuntimeException: Please run "composer require symfony/dotenv" to load the ".env" files configuring the application...

Далее composer update дает Nothing to install or update и тогда

Script cache:clear returned with error code 255 !! !! Fatal error: Uncaught RuntimeException: You need to add "symfony/framework-bundle" as a Composer dependency. in G:\Documents\workspace\mana\bin\console:14

После обновления composer.json, чтобы он требовал PHP 7.2, он теперь включает:

"require": {
    "php": "^7.2",
    "ext-ctype": "*",
    "ext-iconv": "*",
    "beberlei/doctrineextensions": "^1.1",
    "easycorp/easyadmin-bundle": "^2.0",
    "knplabs/knp-snappy-bundle": "^1.6",
    "ob/highcharts-bundle": "^1.6",
    "sensio/framework-extra-bundle": "^5.1",
    "symfony/asset": "4.2.*",
    "symfony/console": "4.2.*",
    "symfony/dotenv": "4.2.*",
    "symfony/expression-language": "4.2.*",
    "symfony/flex": "^1.1",
    "symfony/form": "4.2.*",
    "symfony/framework-bundle": "4.2.*",
    "symfony/monolog-bundle": "^3.1",
    "symfony/orm-pack": "*",
    "symfony/process": "4.2.*",
    "symfony/security-bundle": "4.2.*",
    "symfony/serializer-pack": "*",
    "symfony/swiftmailer-bundle": "^3.1",
    "symfony/templating": "4.2.*",
    "symfony/test-pack": "^1.0",
    "symfony/translation": "4.2.*",
    "symfony/twig-bundle": "4.2.*",
    "symfony/validator": "4.2.*",
    "symfony/web-link": "4.2.*",
    "symfony/webpack-encore-bundle": "^1.0",
    "symfony/yaml": "4.2.*"
},

Обновлено: если, как предлагается в сообщении об ошибке, запускается composer update, происходит следующее. Как видно из composer.json выше, это бессмысленно.

Fatal error: Uncaught RuntimeException: You need to add "symfony/framework-bundle" as a Composer dependency. in G:\Documents\workspace\mana\bin\console:14

Редактировать № 2: Похоже, это не проблема Symfony или PHP. Я работаю в Windows, и у меня есть сервер Hyper-V Ububtu 18, на котором без проблем работает клон приложения в Apache/2.4.29, версия PHP 7.2.19. Делает это намного сложнее разобраться. Отложить этот вопрос?

Редактировать № 3: Восстановил образ Windows двухмесячной давности и получил тот же эффект. Вернулся к текущему изображению и узнал, что описанные выше ошибки начинаются где-то между PHP 7.10 и 7.16 на этом ящике. Обновление Symfony до 4.3 не помогает. АРРРРРРРРРРРРРРРРРРРРРРРРРРР"

Окончательное редактирование: Разобраться с этим не в моих силах. Я закончу выводом PHP 7.2.20. Журнал разработки не создается. Netbeans 11, похоже, не распознает xdebug. Здесь:

(1/1) FatalErrorException

Error: During class fetch: Uncaught ReflectionException: Class PHPUnit\Framework\TestCase not found in G:\Documents\workspace\mana\vendor\symfony\framework-bundle\Test\KernelTestCase.php:24 Stack trace:

0 G:\Documents\workspace\mana\vendor\symfony\debug\DebugClassLoader.php(159):

require('G:\Documents\wo...')

1 [internal function]: Symfony\Component\Debug\DebugClassLoader->loadClass('Symfony\Bundle\...')

2 G:\Documents\workspace\mana\vendor\symfony\framework-bundle\Test\WebTestCase.php(22):

spl_autoload_call('Symfony\Bundle\...')

3 G:\Documents\workspace\mana\vendor\symfony\debug\DebugClassLoader.php(159):

require('G:\Documents\wo...')

4 [internal function]: Symfony\Component\Debug\DebugClassLoader->loadClass('Symfony\Bundle\...')

5 G:\Documents\workspace\mana\vendor\liip\functional-test-bundle\src\Test\WebTestCase.php(41):

spl_autoload_call('Symfony\Bundle\...')

6 G:\Documents\workspace\mana\vendor\symfony\debug\DebugClassLoader.php(159):

require('G:\Documents\wo...')

7 [internal function]: Sy in KernelTestCase.php line 24

это очень хорошая запись в дневнике. у вас есть вопрос?

Jakumi 06.07.2019 19:31

Конечно. Что нужно, чтобы приложение работало в PHP 7.2? Скрытый вопрос теперь явный.

geoB 06.07.2019 20:04

Вы следовали предложению из первого сообщения об ошибке и запускали composer update после нового composer.json? Вы действительно не говорите. Вы можете попробовать перезагрузить все с помощью rm -rf vendor, а затем снова composer update.

ehymel 06.07.2019 21:04

См. правку выше. Должен был быть включен в исходный вопрос.

geoB 06.07.2019 21:10

Вы выполнили рекомендуемую команду: composer require symfony/dotenv?

k0pernikus 08.07.2019 15:45

Выполнение composer require symfony/dotenv только что при обновлении набора зависимостей заканчивается Uncaught ReflectionException: Class PHPUnit\Framework\TestCase not found. Нет там радости.

geoB 08.07.2019 16:59

Все, что я могу добавить, это то, что одно из исправлений, отмеченных в news.txt для PHP 7.2.19, вызывает сбой.

geoB 08.07.2019 18:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
7
4 315
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вышел из строя, используя самое простое возможное решение - полностью перейти на PHP 7.3.7.

Это довольно старо, но недавно я столкнулся с этой проблемой, и, поскольку я совсем не знаком с PHP, это сводило меня с ума. Просто хотел опубликовать это на случай, если это может помочь кому-то еще. Иногда кажется, что путь загрузки просто перепутан с symfony/dotenv. Выполнив следующую строку, я смог «жить требовать» dotenv, даже если обычный механизм загрузки PHP этого не делал:

sed '14irequire("/var/www/html/vendor/symfony/dotenv/Dotenv.php");' -i /var/www/html/vendor/symfony/flex/src/Command/DumpEnvCommand.php;

Ведущий /var/www/html будет заменен тем, что стоит перед вашим каталогом vendor/. Все, что он делает, это вставляет оператор require в файл, который, кажется, неправильно требуется PHP. После этого я смог запустить composer dump-env prod без ошибок.

Я бы не назвал это самым элегантным решением, но мне оно помогло.

У меня была эта проблема в течение почти трех часов. Оказывается, мне пришлось понизить версию flex до 1.6, потому что для более высоких версий flex требуется версия dotenv не ниже 4.4.

Я нашел этот подход к решению здесь: https://github.com/symfony/flex/pull/570

Я также столкнулся с этой проблемой, но в моем случае проблема в том, что композитор обновился до 2.0.11, и это вызвало ошибку относительно этого Please run "composer require symfony/dotenv" to load the ".env" files configuring the application. Я вернулся к композитору 2.0.8, и все снова было хорошо. Я считаю, что 2.0.9 также работает.

Спасибо! Я столкнулся с той же проблемой и могу подтвердить, что понижение версии composer с 2.0.11 до 2.0.9 решило проблему.

Patrizio Bekerle 16.03.2021 20:25

У меня была такая же проблема. Я только что обновил Symfony с 4.4.19 до 4.4.20, и он работает.

paq85 23.03.2021 15:02

Другие вопросы по теме