К сожалению, официальный отчет дает лишь поверхностное понимание, нахожу на оф. сайте, что для обновления подойдет инструкция к версии 4.4, пробую ее.
1. В файле composer. json пакетам symfony меняю 5.0 на 5.1 и делаю:
composer update
2. С помощью symfony-flex повторно запускаю установку компонента symfony/framework-bundle чтобы обновить настройки:
composer recipes:install symfony/framework-bundle --force -v
3. Проверяю, что изменилось (правлю неймспейсы), запустив тесты и ловлю такую ошибку:
Since symfony/dotenv 5.1: Passing a boolean to the constructor of
4. Это меня наталкивает на мысль, что надо понять, как теперь все устроено, устанавливаю 5.1 в директории рядышком:
composer create-project symfony/symfony-5.1
Сверяю изменения (удалил файл config/bootstrap.php).
5. Для phpunit оставили совместимость, только в файле phpunit.xml.dist нужно руками прописать:
bootstrap="tests/bootstrap.php"
и создать файл tests/bootstrap.php с содержимым из файла symfony-5.1/ests/bootstrap.php
Прогоняю тесты.
Поднимаю схему бд, прогоняю миграции, накатываю фикстуры.
Вуаля, все работает.
Обновление с 5.1 на 5.2 выполняется подобным образом.
Читаю документацию и понимаю, что 1-ый шаг делал неправильно, надо было так:
1.1. после изменения версии каждого компонента (например: "symfony/console" с "5.2.*" на "5.3.*") надо так же изменить версию в "extra"-блоке файла composer.json а именно:
"extra": {
"symfony": {
"...": "...",
"require": "5.3.*"
}
} 1.2. и затем выполнить команду: composer update "symfony/*"
Выполняю пункты 2 и 3, и с помощью symfony-flex поочередно обновляю конфигурацию компонентов с помощью рецептов:
composer recipes:updateДолжный помочь команды:
Должен помочь совет: указать пакеты (которые конфликтуют) в файл composer.json
Если все сделали, проект работает, но при входе в symfony профилировщик /_profiler/38717c?panel=logger возникает ошибка:
Uncaught PHP Exception Twig\Error\RuntimeError: "An exception has been thrown during the rendering of a template ("Notice: Undefined index: timestamp_rfc3339").... то копая сорцы в рамках одной симфони-версии можно обнаружить отличие например с файлом DebugProcessor, который подключен в рамках компонента symfony/monolog-bridge, ага идем в composer.lock и обнаруживаем устаревание версии компонента, вердикт - обновлены не все версии symfony компонентов.
Удачки.