#Что означает ошибка
Parse error
Parse error: syntax error, unexpected T_STRING — ошибка синтаксиса: PHP не смог разобрать код, потому что встретил лексему там, где она недопустима. Сообщение указывает номер строки, но настоящая причина часто на строку выше: незакрытая кавычка, пропущенная точка с запятой или скобка.
Так как разбор прерывается ещё до выполнения, ни одна строка скрипта не отработает. Эта ошибка типична после ручной правки файлов и копирования кода из интернета.
Найдите пропущенную точку с запятой, скобку или кавычку в указанной строке.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Пропущен разделитель выражения | Строка перед указанной в ошибке заканчивается без обязательной ;. | В редакторе исправить конкретное выражение и запустить php -l. |
| Незакрытая строка | Подсветка синтаксиса показывает незакрытую одинарную или двойную кавычку. | Исправить экранирование/кавычки в исходном выражении. |
| Несогласованные скобки | Редактор отмечает лишнюю или недостающую круглую/фигурную скобку. | Проверить блоки вокруг указанной строки и повторить проверку синтаксиса. |
| Старый PHP для современного кода | Текущая веб-версия PHP не поддерживает конструкцию, указанную в коде. | Сверить требования приложения и планово выбрать поддерживаемую версию PHP. |
#Пошаговое решение
- Прочитайте номер строкиОткройте журнал сайта или вывод командной строки и найдите полное сообщение
Parse error: syntax error, unexpected ... in /путь/файл.php on line N. Запишите абсолютный путь, номер строки и точную лексему: в PHP 7/8 вместо старогоT_STRINGчасто указываетсяunexpected identifier. Откройте именно этот файл в редакторе с номерами строк (например, VS Code: «Файл» → «Открыть файл», затем Ctrl+G и номер строки). Сначала сохраните резервную копию, особенно если это рабочий сайт. Не исправляйте другой одноимённый файл в чужой копии проекта. - Проверьте предыдущую строкуПосмотрите участок примерно за 5–10 строк до указанного места: PHP нередко обнаруживает ошибку после фактически пропущенного символа. Проверьте парные кавычки (
'/"), круглые и фигурные скобки, закрывающую;после законченного выражения, а также случаи вродеecho 'It's';, где апостроф должен быть экранирован или строка должна использовать двойные кавычки. В терминале в каталоге проекта выполнитеphp -l файл.php, подставив путь к нужному файлу; команда лишь проверяет синтаксис и не запускает скрипт. При исправлении повторите её до ответаNo syntax errors detected. - Проверьте версию PHPЕсли ошибок в окружающих строках не видно, сравните версии PHP в командной строке (
php -v) и на веб-сервере (активная версия PHP-FPM или хостинга). Синтаксисmatch,enum, стрелочные функции и некоторые типы появились только в определённых версиях; старый интерпретатор их не понимает. Не переключайте работающий сайт на другой выпуск без резервной копии и проверки совместимости расширений и движка. После исправления в безопасной тестовой среде проверьте синтаксис нужным бинарным файлом PHP, повторите исходную операцию и проверьте журнал на новые ошибки.
#Типичные ситуации
Нет точки с запятой в конце предыдущей строки; кавычка внутри строки той же кавычкой (echo 'It's'); пропущенная или лишняя скобка; запятая вместо точки при конкатенации; использование ключевого слова версии PHP, которое не поддерживается вашей версией (например, match, enum или типизированные свойства на старом PHP).
#Как быстро найти место
Выполните php -l файл.php — команда проверяет синтаксис без запуска. Откройте IDE с подсветкой синтаксиса: она отметит проблемное место. Смотрите на 1–3 строки выше указанной. Проверьте парность скобок и кавычек и экранируйте символы внутри строк.
#Версии PHP
После переезда на старую версию PHP современные конструкции вызовут parse error. Проверьте php -v и требования проекта. Обновление PHP до поддерживаемой версии решает такие ошибки и повышает безопасность.
php -vphp -l index.php#Как избежать ошибки в будущем
Используйте редактор с подсветкой и автоматическим закрытием скобок и кавычек, подключите линтер (PHP_CodeSniffer, PHPStan) и запускайте php -l перед загрузкой файла на сервер. Не копируйте код из интернета в текстовые редакторы, которые заменяют обычные кавычки на типографские: PHP их не понимает и сообщает о неожиданной лексеме.
#Пример типичной ошибки
Строка echo 'Это не работает'; приведёт к ошибке, потому что апостроф закрывает строку раньше времени. Исправление: экранировать апостроф (\') или использовать двойные кавычки. Если ошибка указывает на строку, где всё выглядит правильно, найдите незакрытую кавычку или скобку выше по файлу.