E_WARNING
Не критично — устраняется самостоятельно

Ошибка E_WARNING — CMS и хостинг

Что это значит

E_WARNING — это не код ошибки в классическом понимании, а уровень ошибки в PHP. Когда в коде CMS или хостинга возникает нефатальная проблема (например, обращение к несуществующей переменной, неправильный тип аргумента), PHP генерирует предупреждение. Система продолжает работу, но в логах появляется запись. Пользователь может увидеть сообщение на экране, если в настройках PHP включён вывод ошибок. В противном случае ошибка остаётся незамеченной, но может привести к некорректной работе скрипта.

Вероятные причины

  • Использование неопределённой переменной или константы
  • Неправильное количество аргументов в функции
  • Обращение к несуществующему индексу массива
  • Деление на ноль (в некоторых версиях PHP)
  • Неверный тип аргумента (например, передача строки вместо числа)
  • Проблемы с подключением файлов (include_once не находит файл)
  • Устаревшие функции (deprecated) в коде
  • Ошибки в синтаксисе регулярных выражений

Что делать — по порядку

  1. Проверьте настройки PHP: отключите display_errors в production-среде, чтобы скрыть сообщения от пользователей
  2. Включите логирование ошибок (log_errors) и проверьте файл лога PHP
  3. Найдите строку кода, указанную в сообщении об ошибке, и исправьте обращение к неопределённым переменным или индексам
  4. Убедитесь, что все используемые функции и константы определены до их вызова
  5. Проверьте типы передаваемых аргументов, используйте приведение типов или проверки (is_int, is_string)
  6. Обновите устаревшие функции до их современных аналогов (например, mysql_* на mysqli_*)
  7. Проверьте права доступа к файлам, которые подключаются через include/require
  8. Если ошибка возникает в стороннем плагине или теме, обновите его или обратитесь к разработчику

Нажимайте на пункты, чтобы отмечать выполненные.

Частые вопросы

Что делать, если я вижу E_WARNING на своём сайте?

Это не критично, но лучше исправить. Отключите вывод ошибок в production (display_errors = Off) и включите логирование. Затем найдите и исправьте причину в коде.

Может ли E_WARNING привести к взлому сайта?

Нет, это не фатальная ошибка. Но если она раскрывает пути к файлам или структуру кода, злоумышленник может использовать эту информацию. Поэтому скрывайте ошибки на production.

Почему E_WARNING не отображается, хотя ошибка есть?

Скорее всего, в php.ini отключён display_errors. Проверьте логи ошибок (error_log) — они должны быть включены.

Как отключить E_WARNING в конкретном скрипте?

Используйте error_reporting(E_ALL & ~E_WARNING); в начале скрипта. Но лучше исправить код, а не скрывать ошибку.

E_WARNING и E_NOTICE — это одно и то же?

Нет. E_WARNING — более серьёзное предупреждение, чем E_NOTICE. E_NOTICE — это уведомление о возможной ошибке, а E_WARNING — о реальной нефатальной проблеме.

Источники

Где встречается

PHP-скрипты, CMS (WordPress, Joomla, Drupal), фреймворки (Laravel, Symfony), хостинг-панели (cPanel, ISPmanager) — любая среда, где выполняется PHP-код