display_errors: показ ошибок PHP и журнал ошибок
В Ubuntu PHP не показывает ошибки на странице: display_errors выключен, а log_errors включён. Ошибки сайта на nginx записываются в журнал nginx. Показ ошибок включают только на время поиска причины и потом выключают обратно.
Содержание 7
Что сделать прямо сейчас
- Команды вводятся на сервере: подключитесь к нему по SSH ([как подключиться](/instrukcii/kak-podklyuchitsya-k-vps-po-ssh/)) и набирайте их в том же окне.
- Откройте конец журнала ошибок nginx:
sudo tail -n 30 /var/log/nginx/error.log. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter. - Найдите строки со словами
PHP message:— после них идёт текст ошибки PHP. - Найдите этот текст в списке ошибок PHP: для каждой ошибки там есть разбор с исправлением.
Как настроены ошибки в Ubuntu
| Настройка | Значение | Что значит |
|---|---|---|
display_errors | Off | ошибки не выводятся на страницу |
display_startup_errors | Off | ошибки при запуске PHP тоже не выводятся |
error_reporting | E_ALL & ~E_DEPRECATED & ~E_STRICT | сообщать обо всех ошибках, кроме предупреждений об устаревшем коде |
log_errors | On | записывать ошибки в журнал |
error_log | не задан | журнал выбирает PHP-FPM: ошибки сайта уходят в журнал nginx |
Так настроен файл /etc/php/8.3/fpm/php.ini — для сайта. Команды — для PHP 8.3 из Ubuntu 24.04. В Ubuntu 26.04 стоит PHP 8.5: в путях и командах вместо 8.3 пишите 8.5. Какая версия у вас, покажет ls /etc/php/.
Где искать ошибки
| Где случилась ошибка | Где её искать |
|---|---|
| на странице сайта | sudo tail -n 30 /var/log/nginx/error.log — строки со словами FastCGI sent in stderr и PHP message: |
| при запуске PHP-FPM | sudo tail -n 30 /var/log/php8.3-fpm.log |
в команде php в окне SSH | прямо в окне, после команды |
Если в настройках сайта nginx указан свой журнал ошибок, ищите там. Его покажет команда grep -rn error_log /etc/nginx/sites-enabled/: в ответе — путь к файлу после слова error_log.
Как на время включить показ ошибок
Команды вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
- Откройте файл настроек PHP для сайта:
sudo nano /etc/php/8.3/fpm/php.ini. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter. - Нажмите Ctrl+W, введите
display_errors =и нажмите Enter — курсор встанет на строку с этой настройкой. Если в начале строки стоит точка с запятой, удалите её: такая строка не действует. - Впишите новое значение:
display_errors = On. - Сохраните файл: Ctrl+O, Enter, затем Ctrl+X.
- Перезапустите PHP-FPM:
sudo systemctl restart php8.3-fpm. Если команда ничего не ответила, PHP перезапущен. - Проверьте значение:
php-fpm8.3 -i | grep display_errors.
Откройте страницу с ошибкой — текст появится прямо на ней. Когда причина найдена, верните display_errors = Off и снова перезапустите PHP-FPM.
Журнал nginx показывает те же ошибки и без этого, поэтому начинайте поиск с него. Если страница белая или с кодом 500, начните с журнала: как найти причину ошибки 500.
У WordPress свой режим отладки с журналом в файле — как его включить.
Как проверить
php-fpm8.3 -i | grep display_errorsВ ответе — строка display_errors => Off => Off: Off — показ выключен. Команда не видит настроек пула и .user.ini. Значение, которое видит сайт, точнее всего показывает phpinfo() на странице сайта: оно учитывает и настройки пула PHP-FPM, и файл .user.ini.
Источники
- Справка PHP: настройки ошибок — display_errors, error_reporting, log_errors и error_log; показ ошибок на рабочем сайте справка советует выключать.
- Файл php.ini-production из PHP 8.3.6 — значения для рабочих серверов: display_errors Off, log_errors On, max_execution_time 30, post_max_size 8M, upload_max_filesize 2M.
- Справка PHP: список настроек — значения по умолчанию и где можно менять каждую настройку: INI_ALL, INI_PERDIR или INI_SYSTEM.
- Исходный код PHP 8.3.6: main.c — приставки PHP Startup и PHP Request Startup, тексты Failed opening и Failed opening required; при фатальной ошибке и выключенном display_errors PHP отвечает кодом 500.
Сверено 14 октября 2026 года.
Что почитать дальше
- Ошибки PHPразборы ошибок PHP по тексту сообщения.
- 500 Internal Server Errorкак найти причину по журналу.
- Настройки PHPглавные настройки и где их задают.