PHP ошибки для начинающих: разбираем страшные сообщения

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

PHP не кусается: как перестать бояться ошибок и начать их понимать

Вы когда-нибудь видели вместо своего сайта пустой белый лист? Или сообщение вроде Parse error: syntax error, unexpected '}' и чувствовали, как внутри всё холодеет? Добро пожаловать в клуб! Каждый PHP-разработчик, от новичка до гуру, проходит через это. Но хорошая новость в том, что большинство ошибок — это не злые проклятия компьютера, а подсказки. Они говорят: «Эй, я не понял, что ты от меня хочешь. Посмотри сюда!».

В этой статье мы разберём самые популярные ошибки PHP, которые пугают начинающих. Мы не просто перечислим их — мы научимся читать сообщения об ошибках, понимать их суть и исправлять. После прочтения вы будете смотреть на Fatal error с лёгкой улыбкой, а не с ужасом. Поехали!

1. Анатомия ошибки PHP: учимся читать сообщения

Прежде чем разбирать конкретные ошибки, давайте поймём, как устроено сообщение об ошибке в PHP. Оно всегда содержит несколько ключевых частей:

  • Тип ошибки (Parse error, Fatal error, Warning, Notice)
  • Сообщение — что именно пошло не так
  • Файл — в каком файле это случилось
  • Строка — номер строки, где ошибка была обнаружена

Пример:

Parse error: syntax error, unexpected '}' in /var/www/script.php on line 15

Здесь PHP чётко говорит: «В файле script.php на 15-й строке я встретил закрывающую фигурную скобку }, которую не ожидал увидеть». Значит, где-то выше мы забыли открыть скобку или поставили лишнюю. Идём в строку 15 и смотрим контекст.

2. Синтаксические ошибки (Parse Error) — корень зла для новичков

Самые частые гости на вечеринке начинающего PHP-программиста — это синтаксические ошибки. PHP — язык с чётким синтаксисом, и если вы пропустили точку с запятой или забыли закрыть скобку, он сразу же на это укажет.

2.1. Пропущенная точка с запятой

Классика жанра. Каждая инструкция в PHP должна заканчиваться точкой с запятой (;).

Неправильно:

<?php
echo "Привет, мир!"
echo "Как дела?";
?>

Ошибка: Parse error: syntax error, unexpected 'echo' (T_ECHO)

Правильно:

<?php
echo "Привет, мир!";
echo "Как дела?";
?>

2.2. Незакрытые кавычки или скобки

Ещё одна популярная ловушка. Если вы открыли строку двойной кавычкой, но забыли её закрыть, PHP «съест» весь остаток кода до следующей кавычки, что приведёт к странной ошибке.

Неправильно:

<?php
$text = "Привет, мир;
echo $text;
?>

Ошибка: Parse error: syntax error, unexpected end of file (потому что PHP ищет закрывающую кавычку до конца файла)

Правильно:

<?php
$text = "Привет, мир";
echo $text;
?>

2.3. Лишние или пропущенные фигурные скобки

В циклах и условиях фигурные скобки определяют блок кода. Одна лишняя — и всё ломается.

Неправильно:

<?php
if ($a > 5) {
    echo "Больше 5";
}
} // Лишняя скобка
?>

Ошибка: Parse error: syntax error, unexpected '}'

Совет: Всегда используйте редактор кода с подсветкой синтаксиса. Он покажет, где скобка непарная. Или считайте скобки вручную: сколько открыли, столько и закрыли.

3. Фатальные ошибки (Fatal Error) — когда скрипт умирает

Фатальная ошибка — это серьёзная проблема. PHP не может продолжить выполнение, и скрипт полностью останавливается. Белый экран — это часто именно Fatal Error, но вывод ошибок может быть отключён.

3.1. Вызов несуществующей функции

Вы попытались вызвать функцию, которую PHP не знает. Либо вы её не объявили, либо ошиблись в названии.

Пример:

<?php
my_custom_function();
?>

Ошибка: Fatal error: Uncaught Error: Call to undefined function my_custom_function()

Решение: Проверьте, объявлена ли функция. Если она в другом файле, подключите его через require или include.

3.2. Ошибка подключения файла (require)

Если вы используете require для подключения файла, а файла не существует, PHP выдаст фатальную ошибку.

Пример:

<?php
require "config.php";
echo "Это не выполнится";
?>

Ошибка: Fatal error: require(): Failed opening required 'config.php'

Решение: Проверьте путь к файлу. Используйте include вместо require, если файл не обязателен, или require_once, чтобы избежать повторного подключения.

4. Предупреждения (Warning) и уведомления (Notice) — не смертельно, но важно

Warning и Notice — это не критические ошибки. Скрипт продолжит работу, но может вести себя непредсказуемо. Игнорировать их — плохая практика.

4.1. Undefined variable (Notice)

Вы пытаетесь использовать переменную, которой не присвоили значение.

Пример:

<?php
echo $name; // $name не определена
?>

Ошибка: Notice: Undefined variable: name

Решение: Всегда инициализируйте переменные перед использованием: $name = '';

4.2. Undefined index / offset (Warning)

Вы обращаетесь к элементу массива, которого не существует.

Пример:

<?php
$user = ['name' => 'Иван'];
echo $user['age']; // Ключа 'age' нет
?>

                
                

Блоги

Рекомендаций по книгам