Ошибки

Ошибки PHP: как найти причину по тексту

PHP пишет ошибку одной строкой: тип, текст по-английски, файл и номер строки. Найдите слова из своего сообщения в таблице — для каждой ошибки есть страница с исправлением по шагам.

≈ 6 мин чтения
Содержание 7

Найдите свою ошибку

Найдите в левой колонке слова из своего сообщения — они идут после PHP Fatal error:, PHP Warning: или Uncaught Error:.

Слова в сообщенииЧто случилосьЧто делать
Maximum execution time of … seconds exceededСкрипт работал дольше лимита max_execution_timeРазбор
Cannot modify header information - headers already sentФайл что-то вывел раньше, чем PHP отправил заголовки ответаРазбор
Call to undefined functionМодуль с этой функцией не поставлен или функцию удалили из PHPРазбор
Call to undefined function mysqli_connect()Не поставлен модуль PHP для MySQLРазбор
Failed to open stream: No such file or directoryФайла нет по пути, который указан в кодеРазбор
Failed to open stream: Permission deniedУ PHP нет прав на файл или папкуРазбор
Undefined variable или Undefined array keyПеременная или ключ массива не заданыРазбор
Class "…" not foundКласс не загружен: нет пакета Composer, модуля PHP или файла с классомРазбор
File not found. или Primary script unknownPHP-FPM не нашёл файл по пути, который прислал nginxРазбор
server reached pm.max_children settingВсе процессы PHP-FPM заняты, новые запросы ждутРазбор
POST Content-Length of … bytes exceeds the limitЗапрос больше лимита post_max_sizeРазбор
Allowed memory size of … bytes exhaustedСкрипту не хватило памятиРазбор, для WordPress — отдельно
502 Bad Gateway на страницах .phpnginx не смог передать запрос PHP-FPMРазбор
504 Gateway Time-outPHP не ответил, пока nginx ждалРазбор
413 Request Entity Too LargeЗапрос больше лимита nginxРазбор
500 Internal Server Error или пустая страницаФатальная ошибка PHP, текст которой записан в журналРазбор

Как читать сообщение

PHP Warning:  file_put_contents(/var/www/example.com/cache/data.json): Failed to open stream: Permission denied in /var/www/example.com/save.php on line 21
  • PHP Warning: — тип сообщения. Warning — предупреждение: PHP продолжает выполнять скрипт. PHP Fatal error: — PHP останавливает скрипт, и страница не открывается или обрывается.
  • file_put_contents(…) — функция, на которой случилась ошибка, а в скобках — файл, с которым она работала.
  • Failed to open stream: Permission denied — текст ошибки. Его и ищите в таблице.
  • in /var/www/example.com/save.php on line 21 — файл и номер строки, где PHP встретил ошибку.

У ошибок Uncaught Error файл и номер строки записаны через двоеточие: /var/www/example.com/api.php:12. В журнале после этой строки идут строки Stack trace: — цепочка вызовов, которая привела к ошибке. Для поиска причины хватает первой строки.

Где увидеть ошибку

В настройках PHP-FPM из Ubuntu показ ошибок на странице выключен (display_errors Off), а запись в журнал включена. Поэтому при фатальной ошибке посетитель видит пустую страницу или ответ 500, а текст ошибки — в журнале.

Команды вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

sudo tail -n 30 /var/log/nginx/error.log

Последние 30 строк журнала ошибок nginx. Ошибки PHP сайта попадают сюда: в такой строке есть слова FastCGI sent in stderr и PHP message:, а за ними — текст ошибки PHP. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter.

sudo tail -n 30 /var/log/php8.3-fpm.log

Журнал самой службы PHP-FPM: запуск, остановка и предупреждения о процессах, например server reached pm.max_children setting.

Если запустить скрипт командой php в окне SSH, ошибки появятся прямо в этом окне.

Команды — для PHP 8.3 из Ubuntu 24.04. В Ubuntu 26.04 стоит PHP 8.5: в путях и командах вместо 8.3 пишите 8.5. Какая версия у вас, покажет ls /etc/php/.

Где настройки PHP

Настройки PHP для сайта — в файле /etc/php/8.3/fpm/php.ini. Для команды php в окне SSH — отдельный файл /etc/php/8.3/cli/php.ini: правка одного не меняет другой. Открыть файл настроек сайта:

sudo nano /etc/php/8.3/fpm/php.ini

После правки сохраните файл (Ctrl+O, Enter, затем Ctrl+X) и перезапустите PHP-FPM:

sudo systemctl restart php8.3-fpm

Если команда ничего не ответила, PHP перезапущен.

Если сайт на WordPress

Источники

Сверено 14 октября 2026 года.

Что почитать дальше