PHP на сервере PHP 7.x/8.x на Linux; версия и веб-обработчик уточняются

PHP на сервере: Как включить журнал ошибок PHP на рабочем сервере без вывода ошибок посетителям

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

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

На рабочем PHP-сайте ошибки лучше писать в закрытый журнал, не показывая посетителям пути, запросы и технические сообщения. Для этого нужны log_errors, отключённый display_errors, доступный путь журнала и проверка, что файлы логов не отдаются веб-сервером.

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

#Что происходит и как определить неисправность

На рабочем PHP-сайте ошибки лучше писать в закрытый журнал, не показывая посетителям пути, запросы и технические сообщения. Для этого нужны log_errors, отключённый display_errors, доступный путь журнала и проверка, что файлы логов не отдаются веб-сервером.

#Вероятные причины и признаки

Возможная причинаКак узнатьЧто делать
Ошибки выводятся прямо в HTMLОшибки выводятся прямо в HTML. Посетители видят warning, stack trace или путиПосетители видят warning, stack trace или путиНастроить display_errors=Off для веб-обработчика.
Журнал не записываетсяЖурнал не записывается. Нет файла или у PHP нет права на каталогНет файла или у PHP нет права на каталогПроверить log_errors, путь error_log, права и место.
Редактируется CLI вместо FPMРедактируется CLI вместо FPM. Скрипт из терминала пишет ошибки, а сайт нетСкрипт из терминала пишет ошибки, а сайт нетНастроить правильный пул и конфигурацию PHP сайта.

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

  1. Определите, где сейчас появляются ошибкиОткройте проблемную страницу без персональных данных, посмотрите HTML и журнал сервера в панели. Если вывод виден пользователю, задача первоочередная: публичные сообщения могут раскрывать расположение файлов и другие детали.
  1. Уточните версию PHP и способ запускаВ панели домена найдите версию PHP, режим PHP-FPM/CGI/Apache и расположение журнала ошибок. На общем хостинге путь и права редактирования могут быть закрыты — запросите у провайдера, не меняйте конфигурацию соседних сайтов.
  1. Сохраните резервную копию настроекПеред изменением сохраните конкретный php.ini/.user.ini или правила пула. Планируйте проверку в низкую нагрузку; изменение display_errors может скрыть симптомы у тестировщика, поэтому подготовьте отдельную безопасную точку просмотра журнала.
  1. Установите конфигурацию в подходящем местеВ редакторе настроек конкретного веб-пула установите log_errors=On, display_errors=Off, display_startup_errors=Off; для error_log используйте приватный путь вне document root, который доступен на запись нужному процессу. Это строки ini, а не команды оболочки.
  2. Пример содержимого php.ini или разрешённого уровня конфигурации; не вводить в терминал
    INI
    Пример содержимого php.ini или разрешённого уровня конфигурации; не вводить в терминал.
    log_errors = On
    display_errors = Off
    display_startup_errors = Off
  1. Проверьте место и права журналаУбедитесь, что каталог журнала существует, запись разрешена пользователю веб-пула и в разделе достаточно места. Не создавайте логи внутри публичных uploads; не применяйте chmod 777 и не делайте файл доступным всем.
  1. Примените настройки точечного обработчикаНажмите «Применить» в панели или организуйте предусмотренную перезагрузку именно нужного PHP-FPM. Не запускайте systemctl restart php-fpm наугад: имя зависит от версии и дистрибутива. Проверяйте статус сайта сразу после изменения.
  1. Проверьте запись на тестовой копииНа закрытом тестовом адресе создайте управляемую запись error_log("WHELP test error log marker") из безопасного фрагмента PHP. Убедитесь, что маркер есть в закрытом журнале, но не попал в страницу. Удалите тестовый файл и запись с чувствительными данными не создавайте.
  1. Настройте обслуживание журналаПроверьте ротацию, ограничение размера и права на новые файлы. Если логи идут в stderr/journald контейнера, не пытайтесь создавать отдельный файл без потребности. При внезапном 502 верните конфигурацию из копии и посмотрите статус пула.

#Как проверить результат

В журнале появляется тестовая запись, посетитель не видит предупреждений в HTML, и сам лог нельзя открыть по URL. При повторном запросе сайт продолжает работать.

#Если не помогло

Если log_errors включён, но файл пуст, проверьте фактический путь FPM, stderr контейнера, права и наличие ошибок; пустой файл сам по себе не означает неисправность.

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

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

Для этой статьи пока не указаны источники. Мы отмечаем такие материалы и дополняем их при проверке.

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