Ошибка unexpected ‘get_header()’ (T_STRING) при переносе на хостинг

Вот такая ошибка Parse error: syntax error, unexpected 'get_header()' (T_STRING) возникла при переносе сайта на WordPress с локального компьютера на хостинг shneider-host.ru. На локальном компьютере всё работало нормально и никаких ошибок не было. При этом некоторые страницы сайта открывались хостинге нормально, а некоторые нет. Ошибка Parse error: syntax error, unexpected 'get_header()' (T_STRING) отсылала на некоторые шаблоны темы.

Сайт попробовал перенести на другой хостинг 1gb.by. На нём тоже все работало нормально и этой ошибки не было. Было решено установить WordPress и проверить как он из коробки работает на этом хостинге. Никаких проблем не возникло и ошибки Parse error: syntax error, unexpected 'get_header()' (T_STRING) не возникало ни на одной из страниц. Тогда в шаблон разрабатываемой темы был вставлен участок кода из стандартной темы WordPress, которая работала без ошибок, до функции get_header(). Например:

Это не помогло и ошибка никуда не ушла. Тогда я попробовал закрыть код php после комментариев и открыть его непосредственно перед get_header() вот таким образом

Ошибка в этом шаблоне, где был исправлен код ушла. Аналогичные действия были сделаны для всех шаблонов и сайт заработал хорошо. При этом то по сути дела ничего не меняется и это совершенно один код, но факт остаётся фактом и всё заработало нормально.

При просмотре кода с режимом показа символов в моём файле с кодом было обнаружено что перевод строки был обозначен только символом CR и это было во всех файлах шаблонов, при обращении к которым появлялась ошибка Parse error: syntax error, unexpected 'get_header()' (T_STRING).

Фрагмент кода

Тема перевода строк это отдельный разговор и углубляться я в неё не буду. Как вышло так, что перевод строки в этих файлах отображался так я сказать не могу. Возможно я вставлял код в файл с таким переводом и пошёл его копировать, однако сделать с ним я ничего не смог. Кодирован он был в UTF-8. В результате я плюнул на всё и просто скопировал и вставил весь код в новый файл и перевод строки стал отображаться CR LF

Фрагмент кода

После этого всё заработало на хостинге нормально. Понятно что в разных системах и кодировках перевод строки отличается, однако протокол HTTP предписывает CR LF как перевод строки, независимо от операционной системы. Понятно, что к WordPress это имеет мало отношения, просто это проявилось здесь, однако могло и в другом коде с другими ошибками.

Однако не понятно одно почему, когда после комментариев был вставлен закрывающий тэг php и вставлен открывающий перед get_header(), этот вариант тоже работал. Хотя он ничем по сути не отличался от первоначального.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *