PHP
Как посмотреть ошибки в PHP-коде и понять, где сломалось
Короткий ответ: в разработке ошибки PHP можно показать через error_reporting(E_ALL) и ini_set('display_errors', '1'), а синтаксис отдельного файла проверить командой php -l file.php. На рабочем сайте ошибки лучше смотреть в логах, а не выводить посетителю
Если страница стала белой, это не значит, что “ничего не произошло”. Чаще всего PHP остановился на ошибке, но вывод ошибок скрыт настройками сервера
Быстрая проверка файла
В терминале выполните
php -l index.php
Если синтаксис нормальный, PHP покажет примерно такой результат
No syntax errors detected in index.php
Если пропущена кавычка, скобка или точка с запятой, команда покажет ошибку и номер строки
Включение ошибок в учебном файле
В начале учебного файла можно временно написать
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
// Ваш код ниже
Такой вариант подходит для локальной разработки. На публичном сайте не стоит показывать ошибки всем посетителям, потому что они могут раскрывать пути к файлам и внутренние детали проекта
Основные типы ошибок
Parse error Синтаксическая ошибка. Часто пропущена кавычка, скобка, точка с запятой или неверно написана конструкция языка
Fatal error Критическая ошибка, после которой скрипт не может продолжить работу. Например, вызвана несуществующая функция или подключен отсутствующий файл
Warning Предупреждение. Код может продолжить выполняться, но что-то пошло не так: файл не найден, заголовок уже отправлен, неверный аргумент
Notice или Deprecated Сообщение о потенциальной проблеме или устаревшем подходе. Игнорировать их надолго не стоит, особенно перед обновлением PHP
Как читать ошибку
Пример
Parse error: syntax error, unexpected token "echo" in /site/index.php on line 12
Смотрите три вещи
- тип ошибки
- файл
- номер строки
Но причина может быть строкой выше. Например, если на строке 12 неожиданно встретился echo, возможно на строке 11 забыта точка с запятой
Белый экран
Если вместо страницы белый экран, проверьте
- включен ли вывод ошибок в разработке
- есть ли запись в error log
- не сломан ли
requireилиinclude - не вызвана ли несуществующая функция
- не закончилась ли память
На WordPress белый экран часто связан с плагином, темой или несовместимой версией PHP
Где искать error log
Место зависит от окружения. В XAMPP логи обычно доступны через панель управления Apache. На хостинге лог может быть в панели сайта, в разделе логов, рядом с доменом или в файле вроде error_log
Если у вас VPS, логи могут быть у Nginx, Apache или PHP-FPM. Поэтому важно понимать, через что запущен сайт
Отладка через var_dump
Для простой проверки переменной можно использовать var_dump()
<?php
$user = [
'name' => 'Динар',
'role' => 'admin',
];
var_dump($user);
После проверки удалите отладочный вывод. Если случайно оставить var_dump() на странице, пользователь увидит внутренние данные
Мини-практика
Создайте файл с ошибкой
<?php
$name = 'PHP'
echo $name;
Проверьте его командой
php -l error-test.php
Затем добавьте пропущенную точку с запятой и повторите проверку. Это лучший первый навык диагностики: не угадывать, а читать сообщение PHP
Частые ошибки
Включают display_errors на рабочем сайте На продакшене ошибки нужно писать в лог, а не показывать посетителю
Смотрят только строку из сообщения Причина часто находится строкой выше
Не проверяют файл через php -l Команда быстро ловит синтаксические ошибки до открытия страницы
Оставляют var_dump в публичном коде Отладочный вывод нужно удалять после проверки
Что почитать дальше по PHP
Если нужен общий маршрут по теме, откройте рубрику PHP. Для соседних задач пригодятся эти разборы:
- Где лежит php.ini и как понять, какой файл настроек использует PHP
- Как обновить PHP в админке: где меняется версия на самом деле
- Как посмотреть PHP-код сайта и почему браузер его не показывает
- Как посмотреть кодировку PHP-файла и исправить русские символы