- Содержание статьи
В такой статье речь пойдет про то, каким образом поправить ошибку «XML declaration allowed only at the start of the document», которая может появляться в некоторых вариантах при переносе веб-сайта на новый хостинг.
Описание
Перенося один из собственных веб-сайтов на новый хостинг, я в один прекрасный момент столкнулся с задачей, что заместо обычной карты веб-сайта, которая генерируется движком вордпресса, вылезло окно с ошибкой:
This page contains the following errors:
error on line 2 at column 6: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.

После гугления обнаружилось, что одной из обстоятельств этот ошибки быть может наличие различных знаков/пробела/переноса строчки в первой строке php файлов текущей темы дизайна для WordPress. Перебегаем к поиску злодея!
Для рекурсивного поиска всех php файлов в директории и отображения только тех, где 1-ая строка начинается не с <?php я наваял вот такую последовательность команд:
find /srv/www/pc.ru/wp-content/themes/sysadmin/ -type f -name '*.php' -exec grep -Hnm1 '' {} ;| grep -v ':1:<?php'
find /srv/www/pc.ru/wp-content/themes/sysadmin/ -type f -name '*.php' — Поиск всех php файлов в директории /srv/www/pc.ru/wp-content/themes/sysadmin/
-exec grep -Hnm1 '' {} ; — Для каждого файла запускаем grep. Параметр H — отображает название текущего файла, n — отображает номер строки, m1 — останавливает поиск после первого же совпадения, » — пустое условие поиска. Таким образом мы из каждого файла берем только первую строку, а также в ней оставляем название файла и номер этой самой строки.
grep -v ':1:<?php' — Параметр v — означает инверсию, т.е. выводит только то, что не совпадает с условием поиска ‘:1:<?php’ В результате выполнения, данная последовательность команд выведет список всех php файлов в директории, первая строчка которых НЕ НАЧИНАЕТСЯ с символов «<?php». Далее остается только отредактировать найденные файлы и убрать из них мусор. В моем случае оказалось, что проблема была из-за невнимательного редактирования — один из файлов темы начинался с символа переноса строки.

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