Выбор ответа Senior Composer и PSR обновлено
Версия PHP на сервере и в composer.lock
Вопрос
Локально PHP 8.3, на сервере 8.2. После composer update деплой падает из-за пакета, требующего PHP 8.3. Как предотвратить?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Задать config.platform.php = 8.2.x, чтобы решатель учёл сервер. Composer подбирает версии под текущее окружение.
Варианты ответа
- Удалить
composer.lock, чтобы сервер сам подобрал версии - Задать
config.platform.php=8.2.x, чтобы решатель учёл серверправильный ответ - Запускать
composer install --ignore-platform-reqsна сервере - Обновлять PHP на сервере при каждом обновлении пакетов
Разбор
Composer подбирает версии под текущее окружение. Настройка config.platform говорит ему считать, что PHP (и расширения) такой версии, как на продакшене, и lock-файл получается совместимым. Проверка composer check-platform-reqs в CI ловит расхождения. Игнорирование требований прячет проблему до первой ошибки в рантайме, а удаление lock-файла ломает воспроизводимость.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.