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