PHP PHP 8LinuxWindows

PHP 8: PHP 8 не отображает ошибки из-за настроек display_errors

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

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

Если на PHP 8 не видно текст ошибки в браузере, это часто штатная защитная настройка display_errors=Off. Диагностировать проблему на рабочем сайте следует через серверный журнал, а не включать вывод внутренних ошибок всем посетителям.

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

#Когда возникает проблема и как её отличить

Если на PHP 8 не видно текст ошибки в браузере, это часто штатная защитная настройка display_errors=Off. Диагностировать проблему на рабочем сайте следует через серверный журнал, а не включать вывод внутренних ошибок всем посетителям.

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

Возможная причинаКак узнатьЧто делать
Настройка productiondisplay_errors выключен для безопасности.В браузере только HTTP 500 или пустая страницаВключить log_errors и читать защищённый журнал.
Изменяется не тот конфигурационный файлВеб-PHP-FPM использует другой php.ini или настройки пула.CLI показывает On, веб всё равно скрывает ошибкиНайти активную конфигурацию для сайта.
Ошибка возникает до запуска ini_setСинтаксическая ошибка может помешать выполнению всего PHP-файла.Даже включение в первой строке ничего не показываетИспользовать php -l и журнал обработчика.

#Пошаговая диагностика и исправление

  1. Проверьте HTTP-симптом без публикации ошибокОткройте неисправный адрес в браузере и запишите время, путь и ответ: пустой экран или HTTP 500. Не копируйте в открытый доступ URL с ключами. На живом сайте не включайте display_errors=On ради удобства: трассировки могут раскрыть файловые пути, параметры SQL и другие сведения.
  2. Найдите журнал ошибок в панелиВ панели управления сайтом откройте журналы ошибок PHP или веб-сервера; конкретное название раздела зависит от хостинга. Обновите страницу и найдите запись с тем же временем и адресом запроса. При собственном сервере проверьте настройки журналирования пула PHP-FPM и веб-сервера, не угадывая путь до файлов.
  3. Сравните настройки обработчика и консолиВ терминале выполните php --ini и php -i, но помните: это данные PHP CLI. Для веб-обработчика администратор должен посмотреть фактическую конфигурацию PHP-FPM/панели. Удостоверьтесь, что log_errors включён, журнал доступен администратору, а display_errors на публичном сайте выключен.
  4. Проверьте синтаксис проблемного файлаЕсли журнал сообщает Parse error либо страница остаётся белой, в каталоге тестовой копии выполните php -l path/to/file.php, заменив путь. Вывод No syntax errors detected относится только к одному файлу и не проверяет подключаемые файлы и работу базы. Исправьте конкретную строку синтаксиса и перепроверьте.
  5. При необходимости включите показ ошибок только локальноНа отдельной тестовой копии, недоступной посторонним, можно использовать display_errors=On и error_reporting=E_ALL через конфигурацию соответствующей PHP-версии. Изменение ini_set() внутри скрипта не поможет, если файл не может начать исполняться. После проверки верните прежние настройки и удалите диагностические страницы.
  6. Проверьте журнал повторным запросомСнова вызовите ту же страницу. Убедитесь, что журнал содержит понятную запись, исправьте исходную ошибку и проверьте HTTP-ответ, отображение страницы и отсутствие новых записей. Если журнал пуст, уточните, не пишет ли ошибки FastCGI/FPM в отдельный файл, и проверяйте запросы на уровне веб-сервера.
  7. Дополнительная команда по теме
    Linux · Терминал (Bash)Команда
    Терминал тестовой среды: первая команда показывает конфигурацию PHP CLI, вторая проверяет синтаксис выбранного файла. Путь замените на реальный.
    php --ini
    php -l path/to/file.php

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

Пользователь должен видеть страницу или штатное безопасное сообщение, а администратор — необходимую запись в защищённом журнале. Отсутствие текста ошибки в браузере само по себе не свидетельствует о неисправности.

#Если ошибка осталась

Повторите исходный сценарий в тестовой среде, откройте свежую запись журнала с точным временем, именем функции, файлом и строкой. Сравните новое сообщение с исходным: ошибка могла переместиться на следующий участок кода. Не подавляйте все ошибки общим обработчиком. Если изменения затрагивали работающий проект, восстановите сохранённую копию и разберите новое сообщение до повторного переноса.

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

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