Как исправить синтаксические ошибки PHP? Полный гайд по parse/syntax errors
Почему возникает ошибка и как её читать
Ваша ошибка — классический пример неправильного синтаксиса условного оператора if. В PHP условие в if обязательно должно быть в круглых скобках. Вы написали if $age > 30, а нужно if ($age > 30). Интерпретатор видит ключевое слово if, ожидает открывающую скобку (, но находит переменную $age — отсюда и сообщение "unexpected '$age'".
Как исправить ваш код
<?php
$users = array(
"Иван" => 25,
"Мария" => 30,
"Петр" => 35
);
foreach ($users as $name => $age) {
echo "Пользователь: $name, возраст: $age\n";
if ($age > 30) { // <-- добавили скобки
echo " - Старше 30 лет";
}
}
?>
Типичные синтаксические ошибки и их решения
- Пропущенная точка с запятой (;) — каждая инструкция в PHP должна заканчиваться
;. Чаще всего забывают перед закрывающим тегом?>или в конце блока. - Незакрытые кавычки или скобки — всегда проверяйте парность:
"с",(с),{с}. Используйте IDE с подсветкой синтаксиса. - Лишние или пропущенные фигурные скобки — особенно в сложных конструкциях с вложенными
ifи циклами. Отступы помогают видеть структуру. - Ошибки в строковых литералах — если в строке в двойных кавычках есть переменная, а вы случайно поставили одинарную кавычку, или наоборот.
- Неправильное использование операторов — например,
=вместо==в условии, или=>вместо->.
Пошаговый метод отладки
1. Прочитайте номер строки — ошибка указывает на строку, где PHP обнаружил проблему. Но часто реальная проблема на строку-две выше. Например, если забыли точку с запятой, ошибка покажет следующую строку.
2. Проверьте контекст — посмотрите на 3-5 строк до указанной. Ищите незакрытые скобки, кавычки, отсутствие ;.
3. Включите отображение всех ошибок — в начале скрипта добавьте:
ini_set('display_errors', 1);
error_reporting(E_ALL);
4. Используйте лог ошибок — если на боевом сервере, смотрите error_log. Там ошибки записываются с точным временем.
5. Проверяйте синтаксис из командной строки — выполните php -l file.php. Эта команда проверяет файл на синтаксические ошибки без выполнения.
Профилактика
- Всегда используйте IDE (PhpStorm, VS Code с плагинами) — они подсвечивают ошибки в реальном времени.
- Соблюдайте стандарты кодирования PSR-12 — единый стиль уменьшает количество опечаток.
- Пишите код небольшими блоками и сразу тестируйте.
- Не экономьте на фигурных скобках — даже для однострочных конструкций ставьте
{}.
Альтернативный подход: использование инструментов статического анализа
Если вы часто допускаете синтаксические ошибки и устали от ручной отладки, рекомендую внедрить инструменты статического анализа кода. Они проверяют PHP-файлы на ошибки до их выполнения.
PHP Lint (встроенный)
Самый простой способ — использовать встроенную проверку синтаксиса через командную строку:
php -l script.php
Эта команда покажет все синтаксические ошибки без запуска скрипта. Можно автоматизировать в Git-хуках, чтобы код с ошибками не попадал в репозиторий.
PHP CodeSniffer и PHPStan
PHP CodeSniffer (phpcs) проверяет соответствие стандартам кодирования и находит распространённые синтаксические ошибки. Установка через Composer:
composer require --dev squizlabs/php_codesniffer
Запуск: vendor/bin/phpcs --standard=PSR12 script.php
PHPStan — более мощный инструмент, который находит не только синтаксические, но и логические ошибки, несоответствие типов, неиспользуемые переменные. Установка:
composer require --dev phpstan/phpstan
Запуск: vendor/bin/phpstan analyse script.php --level=max
Преимущества автоматизации
- Экономия времени — не нужно вручную искать пропущенные скобки.
- Обучение — инструменты показывают точное место ошибки и дают подсказки.
- Командная работа — код проходит единую проверку перед слиянием.
Начните с php -l для быстрых проверок, а затем подключите PHPStan для глубокого анализа. Это кардинально снизит количество синтаксических ошибок в вашем коде.