Ошибка Syntax Error в 1С-Битрикс относится к числу критических PHP-ошибок, из-за которых выполнение скрипта полностью прекращается. В большинстве случаев сайт начинает отображать белый экран, появляется HTTP Error 500 или открывается сообщение с указанием строки, в которой обнаружена синтаксическая ошибка.

Подобные ошибки чаще всего возникают после самостоятельного редактирования файлов, обновления PHP, установки сторонних модулей или при переносе сайта на другой сервер. В этой статье подробно рассмотрим все причины возникновения Syntax Error в Битрикс, способы диагностики и исправления с практическими примерами.

Что означает Syntax Error

Syntax Error означает, что PHP не смог корректно разобрать код из-за нарушения синтаксиса языка.

Типичное сообщение выглядит следующим образом:

Parse error: syntax error, unexpected ';'
in /home/site/local/php_interface/init.php on line 47

Либо:

Fatal error:
syntax error, unexpected token "public"

PHP прекращает выполнение файла сразу после обнаружения ошибки.

Самые распространенные Syntax Error в Битрикс

  • Parse error: syntax error
  • Unexpected token
  • Unexpected end of file
  • Unexpected variable
  • Unexpected identifier
  • Unexpected string
  • Unexpected ')'
  • Unexpected '{'
  • Unexpected '}'
  • Unexpected ','
  • Unexpected ':'
  • Unexpected T_STRING
  • Unexpected T_FUNCTION
  • Unexpected T_PUBLIC
  • Unexpected T_PRIVATE
  • Unexpected T_PROTECTED

Причины возникновения ошибки

  • пропущена точка с запятой;
  • не закрыта фигурная скобка;
  • не закрыта круглая скобка;
  • не закрыта кавычка;
  • ошибка после копирования кода;
  • использование неподдерживаемого синтаксиса PHP;
  • повреждение файлов сайта;
  • ошибка в init.php;
  • ошибка в template.php;
  • ошибка после обновления PHP;
  • ошибка в стороннем модуле.

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

Самая распространенная ошибка.

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

$title = "Главная"
echo $title;

Правильно:

$title = "Главная";
echo $title;

Не закрыта фигурная скобка

Ошибка часто появляется после редактирования шаблонов.

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

if ($USER->IsAuthorized()) {

echo "Добро пожаловать";

Правильно:

if ($USER->IsAuthorized()) {

    echo "Добро пожаловать";

}

Не закрыта круглая скобка

if ($USER->IsAdmin( {

}

Правильный вариант:

if ($USER->IsAdmin()) {

}

Ошибка в массиве

Очень часто встречается после ручного редактирования настроек.

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

$arResult = [

"NAME" => "Телефон"

"PRICE" => 1200

];

Правильно:

$arResult = [

"NAME" => "Телефон",

"PRICE" => 1200

];

Unexpected end of file

Ошибка означает, что PHP ожидал закрывающую конструкцию.

Например:

foreach ($items as $item) {

echo $item;

Правильно:

foreach ($items as $item) {

echo $item;

}

Unexpected token

После перехода на PHP 8 подобная ошибка встречается значительно чаще.

Например:

public function test(

или

match (

Причиной может быть использование неподдерживаемого синтаксиса либо поврежденный файл.

Syntax Error после обновления PHP

После перехода с PHP 7.x на PHP 8.x некоторые конструкции начинают работать иначе.

Частые причины:

  • устаревшие функции;
  • изменение синтаксиса;
  • новые зарезервированные слова;
  • несовместимые сторонние модули;
  • старые шаблоны сайта.

Ошибка в init.php

Практически каждый второй Syntax Error в Битрикс связан именно с файлом:

/local/php_interface/init.php

Либо:

/bitrix/php_interface/init.php

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

Ошибка в template.php

При разработке шаблонов часто забывают закрывать конструкции PHP.

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

<?php if($arItem): ?>

<div>

<?php endif;

Правильно:

<?php if($arItem): ?>

<div>

</div>

<?php endif; ?>

Ошибка после установки модуля

Некоторые сторонние решения не поддерживают новые версии PHP и могут содержать синтаксические ошибки.

В этом случае рекомендуется:

  1. отключить модуль;
  2. проверить совместимость;
  3. обновить решение;
  4. обратиться к разработчику.

Как найти Syntax Error

  1. Включить отображение ошибок PHP.
  2. Изучить текст ошибки.
  3. Определить номер строки.
  4. Открыть файл.
  5. Проверить предыдущие 20–30 строк.
  6. Проверить баланс скобок.
  7. Проверить кавычки.
  8. Проверить точки с запятой.
  9. Проверить кодировку файла.
  10. Использовать IDE с подсветкой синтаксиса.

Полезные инструменты

  • PhpStorm
  • Visual Studio Code
  • PHPStorm Inspector
  • PHP_CodeSniffer
  • PHPStan
  • Psalm
  • PHP Lint

Стоимость исправления Syntax Error

Услуга Средняя стоимость
Поиск причины ошибки от 1 000 ₽
Исправление Syntax Error от 2 000 ₽
Исправление init.php от 2 500 ₽
Исправление шаблона сайта от 3 000 ₽
Исправление стороннего модуля от 4 000 ₽
Восстановление после обновления PHP от 5 000 ₽
Комплексное восстановление сайта от 8 000 ₽

Как избежать подобных ошибок

  • используйте современные редакторы кода;
  • не редактируйте файлы через FTP без проверки;
  • перед изменениями создавайте резервные копии;
  • проверяйте код командой PHP Lint;
  • используйте Git для контроля версий;
  • обновляйте сторонние модули;
  • тестируйте сайт на локальном сервере перед публикацией.

Заключение

Syntax Error в 1С-Битрикс практически всегда связан с ошибкой в PHP-коде. Чаще всего проблема возникает из-за пропущенной точки с запятой, незакрытой скобки, поврежденного файла или несовместимости после обновления PHP. Благодаря сообщению об ошибке с указанием файла и номера строки найти причину обычно несложно. Использование современных IDE, резервного копирования и предварительного тестирования изменений позволяет практически полностью исключить появление подобных ошибок на рабочем сайте.

Метки: ,