Выгрузка для Яндекса открывается с ошибкой Parse error: unexpected identifier "version". В теме октября 2025 года ошибка была в сгенерированном yandex_export.php на строке 8. По одному сообщению нельзя назвать точную причину чужого сайта, но сам текст ошибки позволяет проверить один узкий и хорошо известный случай.
Если ошибка указывает на version в строке XML-декларации <?xml version="1.0"?> внутри PHP-шаблона, при включённых коротких PHP-тегах он пытается разобрать XML как PHP. Решение — выводить XML-декларацию из PHP, а не начинать файл с короткой последовательности <?.
Когда этот рецепт подходит
Откройте свою копию шаблона выгрузки и посмотрите первые строки. Рецепт применим только при двух признаках: ошибка указывает на version, а в этой строке есть <?xml. Если строка другая или ошибка глубже в файле, остановитесь: это уже другой синтаксис.
Не меняйте автоматически созданный файл в ядре и не редактируйте его после каждого запуска. Найдите настройку или свой шаблон экспорта, из которого он строится. Правка должна переживать повторную генерацию.
Безопасный вывод XML-декларации
В PHP-файле используйте обычный открывающий тег <?php и выведите строку явно:
<?php
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<yml_catalog date="2026-10-04">
<shop></shop>
</yml_catalog>
Дата выше приведена только как пример разметки. В настоящей выгрузке не подставляйте её вручную, если дата формируется программой. Важна только первая строка: декларация появляется в ответе, но PHP не пытается выполнить слово xml как код.
Почему так происходит
PHP официально рекомендует обычные теги <?php ?> и короткий echo-тег <?= ?>. Обычный короткий тег <? зависит от настройки short_open_tag. XML-декларация начинается именно с этих двух символов, поэтому сочетание непереносимо между серверами.
Не лечите ошибку глобальным включением или выключением short_open_tag на боевом сервере. Такая настройка может изменить поведение старого кода. Исправьте один собственный шаблон и оставьте платформенные настройки без эксперимента.
Как проверить без настоящего Яндекса
- Сохраните копию своего шаблона и измените его на тестовой установке.
- Сгенерируйте один тестовый файл выгрузки.
- Убедитесь, что в начале файла есть ровно
<?xml version="1.0" encoding="UTF-8"?>. - Прогоните файл XML-парсером или валидатором принимающей системы.
- Повторите генерацию: исправление не должно исчезнуть.
Успешный XML-разбор подтверждает синтаксис XML. Он не проверяет обязательные поля YML и успешную загрузку в кабинет Яндекса. Второй шаг — отправить тестовую выгрузку туда отдельно и посмотреть его сообщение.
Статья подготовлена 4 октября 2026 года. Форумный симптом: тема 163682; причина конкретного файла там не подтверждена. Условное решение воспроизведено на собственном PHP/XML-файле при коротких тегах: это подтверждают руководство PHP по тегам, описание аналогичной ошибки и контракт XML-парсера. Это не диагноз выгрузки из темы.