Ошибка E_WARNING — CMS и хостинг
Что это значит
E_WARNING — это не код ошибки в классическом понимании, а уровень ошибки в PHP. Когда в коде CMS или хостинга возникает нефатальная проблема (например, обращение к несуществующей переменной, неправильный тип аргумента), PHP генерирует предупреждение. Система продолжает работу, но в логах появляется запись. Пользователь может увидеть сообщение на экране, если в настройках PHP включён вывод ошибок. В противном случае ошибка остаётся незамеченной, но может привести к некорректной работе скрипта.
Вероятные причины
- Использование неопределённой переменной или константы
- Неправильное количество аргументов в функции
- Обращение к несуществующему индексу массива
- Деление на ноль (в некоторых версиях PHP)
- Неверный тип аргумента (например, передача строки вместо числа)
- Проблемы с подключением файлов (include_once не находит файл)
- Устаревшие функции (deprecated) в коде
- Ошибки в синтаксисе регулярных выражений
Что делать — по порядку
- Проверьте настройки PHP: отключите display_errors в production-среде, чтобы скрыть сообщения от пользователей
- Включите логирование ошибок (log_errors) и проверьте файл лога PHP
- Найдите строку кода, указанную в сообщении об ошибке, и исправьте обращение к неопределённым переменным или индексам
- Убедитесь, что все используемые функции и константы определены до их вызова
- Проверьте типы передаваемых аргументов, используйте приведение типов или проверки (is_int, is_string)
- Обновите устаревшие функции до их современных аналогов (например, mysql_* на mysqli_*)
- Проверьте права доступа к файлам, которые подключаются через include/require
- Если ошибка возникает в стороннем плагине или теме, обновите его или обратитесь к разработчику
Нажимайте на пункты, чтобы отмечать выполненные.
Частые вопросы
Что делать, если я вижу 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: Predefined Constants — Manual проверено 28.07.2026
- PHP: Runtime Configuration — Manual проверено 28.07.2026
Где встречается
PHP-скрипты, CMS (WordPress, Joomla, Drupal), фреймворки (Laravel, Symfony), хостинг-панели (cPanel, ISPmanager) — любая среда, где выполняется PHP-код