Задача
Внутренний портал работал на Laravel 6 и PHP 7.4 — обновления безопасности уже не выходили, часть пакетов не поддерживалась, а разработчики боялись трогать код, чтобы ничего не сломать.
Что нашли
14 известных уязвимостей в зависимостях, несовместимые между собой пакеты и полное отсутствие тестового окружения — обновлять «на живую» было рискованно.
Что сделали
- Составили план поэтапного обновления по мажорным версиям Laravel
- Разворачивали копию портала и обновляли на ней с прогоном тестов на каждом шаге
- Заменили устаревшие пакеты на поддерживаемые аналоги
- Перевели проект на PHP 8.3 и включили OPcache
Результат
Портал работает на актуальном Laravel 11, известные уязвимости закрыты, скорость и стабильность выросли. Простоя во время работ не было — обновление шло поэтапно на копии с переключением после проверки.