PHP 8.1+: Deprecated — Passing null to parameter must be of type string

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

В PHP 8.1 передача null во встроенные функции объявлена устаревшей. Проверяйте значения и используйте оператор ??.

В этой статье
  1. Что означает сообщение
  2. Причины и признаки
  3. Пошаговое решение
  4. На что обратить внимание

#Что означает сообщение

Сообщение
Deprecated: Passing null

В PHP 8.1 передача null во встроенные функции объявлена устаревшей. Проверяйте значения и используйте оператор ??.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Значение nullПредупреждение показывает передачу null во встроенную функциюОбработать null до вызова
Старый кодПроблема в устаревшей функции собственного приложенияИсправить типы по PHP 8.1+
Пустой вводНеобязательное поле формы отсутствуетЯвно обработать значение по умолчанию
БиблиотекаПредупреждение находится внутри vendorОбновить библиотеку

#Пошаговое решение

  1. Найдите вызов, передающий null во встроенную функциюВ журнале PHP 8.1+ найдите предупреждение Deprecated: Passing null to parameter #... и файл со строкой. Откройте этот вызов в редакторе: например trim($name) или strlen($text). Новые версии PHP предупреждают о null для параметров встроенных функций с не-null типами. Не отключайте вывод предупреждений как замену исправления кода.
  2. Установите смысл отсутствующего значенияОпределите, почему переменная равна null: отсутствует поле формы, ключ SQL, результат разбора JSON или необязательный аргумент. Для строкового поля, где отсутствие равно пустой строке, подходит $name = trim($value ?? "");. Если отсутствие запрещено, проверяйте $value === null и выдавайте понятную ошибку ввода, вместо тихой подмены. Не приводите к строке данные с непредусмотренными типами.
  3. Проверьте сторонний код и совместимость библиотекЕсли предупреждение находится в vendor/ или установленной теме/модуле, узнайте версию пакета и проверьте официальное обновление с поддержкой PHP 8.1+. Не редактируйте vendor вручную — изменения будут потеряны при следующем composer install. Для собственных функций используйте корректные объявления ?string только там, где их код обрабатывает null. Сохраните тестовые случаи для пустой строки и отсутствующего значения.
  4. Повторите выполнение без подавления ошибокПроведите тест с заполненным и пустым входом, убедитесь, что итоговые строки и числа корректны и предупреждение больше не пишется в журнал. Если проблема скрыта только за отключением E_DEPRECATED, исправление не выполнено. Проверьте соседние подобные вызовы в том же модуле и зафиксируйте версию PHP, на которой проводилась проверка.

#На что обратить внимание

Не скрывайте все сообщения PHP как единственное исправление: проблема может стать ошибкой в будущих версиях. Проверяйте поведение на тестовом окружении перед обновлением рабочего сайта.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.