PHP на сервере Linux, PHP-FPM (версия уточняется)

PHP на сервере: PHP выдаёт предупреждение об устаревшем синтаксисе

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

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

Предупреждение PHP об устаревших конструкциях означает, что код использует механизм, помеченный к удалению в новой версии. E_DEPRECATED — это не то же самое, что синтаксическая ошибка; код иногда продолжает работать, но его необходимо проверить на совместимость до следующего обновления.

В этой статье
  1. Что происходит и когда применима инструкция
  2. Причины и диагностические признаки
  3. Подробная пошаговая инструкция
  4. Как проверить, что проблема исправлена
  5. Если не помогло — дальнейшая диагностика и откат

#Что происходит и когда применима инструкция

Предупреждение PHP об устаревших конструкциях означает, что код использует механизм, помеченный к удалению в новой версии. E_DEPRECATED — это не то же самое, что синтаксическая ошибка; код иногда продолжает работать, но его необходимо проверить на совместимость до следующего обновления.

#Причины и диагностические признаки

Возможная причинаКак узнатьЧто делать
Устаревшая функция или возможность PHPУстаревшая функция или возможность PHP. В журнале указано Deprecated и конкретный символ/файл.В журнале указано Deprecated и конкретный символ/файл.Найти замену по документации версии.
Предупреждение из сторонней библиотекиПредупреждение из сторонней библиотеки. Путь относится к vendor/ или плагину.Путь относится к vendor/ или плагину.Обновить библиотеку совместимым релизом и проверить зависимости.
Сообщение ошибочно выводится посетителямСообщение ошибочно выводится посетителям. Вместо только журналирования включён display_errors.Вместо только журналирования включён display_errors.Отключить публичный вывод и сохранить логирование.

#Подробная пошаговая инструкция

  1. Скопируйте точный текст предупрежденияОткройте журнал ошибок сайта и запишите первое сообщение Deprecated вместе с номером строки и версией PHP, не публикуя секреты. Важны название устаревшей конструкции и версия: в разных выпусках PHP набор предупреждений отличается.
  1. Выясните, предупреждение или остановка выполненияВ браузере F12 → «Сеть» проверьте статус HTTP. При 200 приложение может лишь печатать предупреждение в HTML, при 500 отдельно ищите Fatal error, TypeError или Uncaught. Не лечите фатальную ошибку отключением E_DEPRECATED.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)Команда
    SSH, только CLI-диагностика; -l проверяет синтаксис одного указанного файла, но не фактическую совместимость всего сайта. Путь и бинарник замените.
    php -v; php -l /var/www/example/public/index.php
  1. Определите владельца проблемного кодаЕсли предупреждение ссылается на ваш файл, найдите вызов и проверьте официальную документацию PHP о его замене. Если это пакет стороннего разработчика, проверьте заявленную поддержку вашей версии PHP; не правьте файлы vendor вручную без фиксации обновления через менеджер зависимостей.
  1. Исправьте в тестовом окружении и сохраните совместимостьСделайте копию файла и тестовую базу, перепишите устаревший вызов способом, поддерживаемым требуемыми версиями PHP. Проверьте разные входные значения, исключения, кодировку и возвращаемые типы; отсутствие предупреждения ещё не доказывает совпадение поведения.
  1. Если нужна временная мера, защитите посетителейУстановите display_errors=Off и log_errors=On для веб-окружения, но продолжайте фиксировать предупреждения в журнале. Изменение error_reporting ради сокрытия Deprecated допустимо лишь как временная мера с планом обновления: оно не делает код совместимым.
  2. SSH, только чтение настроек CLI, они могут отличаться от FPM
    Linux · Терминал (Bash)Команда
    SSH, только чтение настроек CLI, они могут отличаться от FPM. Не используется для изменения отчётности на сайте.
    php -r "echo PHP_VERSION, PHP_EOL; echo error_reporting(), PHP_EOL;"
  1. Проверьте обновление на реальных сценарияхНа тестовом домене пройдите авторизацию, сохранение данных, загрузку файла и один критичный путь приложения. После переноса исправления проверьте журнал и количество Deprecated за несколько минут; при регрессии верните копию и уточните замену.
  1. Если сообщение связано с PHP 8.4/8.5, проверьте изменения именно этого выпускаНе переписывайте код наугад по руководству старой версии. Дата появления предупреждения, набор аргументов и поведение функции могут отличаться; сверяйте документацию и журнал соответствующей ветки PHP.

#Как проверить, что проблема исправлена

Предупреждение исчезло после исправления, критические сценарии приложения работают, журналирование включено без публичной демонстрации служебных сообщений.

#Если не помогло — дальнейшая диагностика и откат

Если после исправления Deprecated появились TypeError или новые Fatal error, откатите отдельный патч и проверьте подписи функций и поддержку библиотек. Нельзя автоматически заменять несовместимую функцию строковым поиском во всех PHP-файлах.

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

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

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