Приложение 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
Конечно. Что нужно, чтобы приложение работало в PHP 7.2? Скрытый вопрос теперь явный.
Вы следовали предложению из первого сообщения об ошибке и запускали composer update после нового composer.json? Вы действительно не говорите. Вы можете попробовать перезагрузить все с помощью rm -rf vendor, а затем снова composer update.
См. правку выше. Должен был быть включен в исходный вопрос.
Вы выполнили рекомендуемую команду: composer require symfony/dotenv?
Выполнение composer require symfony/dotenv только что при обновлении набора зависимостей заканчивается Uncaught ReflectionException: Class PHPUnit\Framework\TestCase not found. Нет там радости.
Все, что я могу добавить, это то, что одно из исправлений, отмеченных в news.txt для PHP 7.2.19, вызывает сбой.






Вышел из строя, используя самое простое возможное решение - полностью перейти на 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 решило проблему.
У меня была такая же проблема. Я только что обновил Symfony с 4.4.19 до 4.4.20, и он работает.
это очень хорошая запись в дневнике. у вас есть вопрос?