WordPress: Cookies заблокированы из-за неожиданного вывода на экран

На днях переносил готовый сайт с одного хостинга на другой. Процедура будничная. Я такое миллион раз делал. Да и, в последнее время пользовался в основном VDS (виртуальными серверами) на Центосе с хостинг-админкой на ISP. Потому, особых проблем не было, но тут понадобилось засунуть сайт на виртуальный хостинг. Что началось…

Электричество

Сначала не мог создать базу данных. Пишу имя базы, логин, а панель управления выдает ошибку. Оказалось, что хостер добавляет к этим двум параметрам некий идентификатор, который их удлиняет. Но никаких сообщений, что мол длинновато, не выводит, щука! Укоротил и то и другое. База создалась. Выдохнул.

Затем, решил залить дамп в свежесозданную базу, но вместо PhpMyAdmin мне вылезло нечто, состоящее из полей и хаотично намешанного текста. Провозился с этим с пол-часа, даже вскипел от негодования. Но стоило зайти другим браузером, и всё заработало. Не работало в Хроме, если тебе интересно. Хром кака! Фаерфокс рулит! Ла-ла-ла-ла-ла!

Занавес...

В итоге, перенес файлы, залил подправленный, с учетом нового домена, дамп, запустил сайт и… нифига! Оказалось, что хостер меняет пусть к админке WordPress из «соображений безопастности». У меня аж челюсти свело, лицо покраснело, кулак грохнул по столешнице так, что гипсовое крошево полетело во все стороны. Что поделать, стол гипсовый, нормальным пока не обзавёлся.

Российские иновации?

Пишу в техподдержку. Там почесали репу и отключили эту их «защиту». Отлично! Ну уж теперь-то всё заработает как надо! Захожу в админку. Фиг! Да вы прикалываетесь!

Теперь при обращении к /wp-admin/ вижу белый экран, а если попытаться загрузить /wp-login.php вылезает форма авторизации, но после ввода логина/пароля вылезает надпись «ОШИБКА: Cookies заблокированы из-за неожиданного вывода на экран». Быстро зыркнул по сторонам в поисках нерадивых хостеров, которым надо оторвать руки. На нашел ни одного и принялся вводить пароли, чистить куки, включать/выключать сообщения об ошибках. Получил «Cannot modify header information», выругался, поискал еще инфы. Ну и так далее и тому подобное.

Ели дотащили...

Бля…ха-муха! Подолбился в эту стену, затем полез в великий и ужасный Яндекс. Нашел туеву кучу рецептов, которые сводились к тому, что дескать, надо перекодировать wp-config.php в корне и function.php в папке шаблона в правильный UTF-8 без BOM он же No Mark. Всё это я сделал, но хрен там уже рос, видимо. Не помогло, в общем.

Паникуете?

Среди той самой кучи г… эм… превосходных, но нифига не работающих советов, нашел еще один, который отличался от прочих. Там рекомендовали переустановить WordPress заново, очистить и залить дамп базы по-новой. Ессссссссно сделал. И… Да… он самый. Нет, не триумф. Ну ты понимаешь.

Пришлось включить голову.

UPDATE 04.10.2017: Специально для тех, кому лень читать дальше эту историю слабоумия и отваги, даю подсказку: в файлах темы самый последний «<?php» не рекомендуется закрывать с помощью «?>», если после него не было html-разметки. Но убирая «?>» вы должны понимать что делаете и зачем.
Если это не помогло, попробуйте начать убирать лишние переносы строк, проблема в них.

Как я решил проблему «Cookies заблокированы из-за неожиданного вывода на экран»

  1. Для начала, через PhpMyAdmin полностью очистил базу данных, предназначенную для сайта.
  2. Затем, из корня сайта удалил wp-config.php Вот так взял и удалил его полностью!
  3. После, зашел на сайт, увидел там всё то, что видит любой, кто устанавливает WordPress с нуля. Заполнил все необходимые поля. Сначала спрашивали Имя базы, Логин базы, Пароль базы и префикс таблиц. Затем, название блога, логин/пароль к админке, e-mail и вроде еще что-то, не помню.
  4. После этого получил радостное сообщение, что мол всё, и зашел в админку.
  5. Отлично! Значит, с той базой, что WordPress сам заполнил, админка работает.
  6. Скачал дамп этой почти нулёвой, но рабочей базы, и с помощью Progremmers Notepad перенес в него из другого дампа (который планировал заливать) информацию с постами, опциями, названиями рубрик и вообще, всем, что необходимо. Таблицу с данными пользователя не трогал.
  7. Залил этот изменённый дамп и… всё заработало.

Конечно, если ты понятия не имеешь что такое дамп базы и не представляешь где в нём данные, содержащие посты, страницы, опции и пр., то лучше попроси того, кто умеет. Но зато, если знаешь всё это, подобным методом справишься минут за 10. Возможно.

Мастер-джедай!

Самый смех в том, что сайт ставил на CMS-хостинг, который хостер позиционирует специально под сайты на WordPress’е. Маркетологи хреновы! Знал бы, сразу взял самый заурядный тариф, ибо, кроме более высокой цены, ничего заточенного под WordPress я так и не углядел. Видимо, хорошо прячут.

Как потопал, так и полопал

Еще подумал, здорово, что всем этим занимался я, а не клиент. А то некоторые разрабы отдают сайт в виде архива файлов и дампа базы данных. Что клиент будет с этим делать им фиолетово, ибо уплочено. Увы, я, покамест, до подобного «высокого класса» не дорос. Но, всё впереди, надеюсь.

UPDATE 12.03.2015

Прошло 2 дня. Пытаюсь зайти в админку и снова та же ошибка! Ну ё-моё, всё-ж работало!!!(((

MyFacePalm

Полез в саппорт (в техподдержку) хостера. Там ничем не помогли, сказали писать письмо и ждать. Ответа ждал больше  суток. В итоге закрыл заявку и засел ковыряться.

Для начала снова переименовал уже имеющуюся папку plugins, а вместо нее создал пустую. Не помогло!

Затем, удалил папку с темой (дизайном, шаблоном). Ошибка исчезла!

Восстановил папку с темой из копии и стал проверять каждый файл. Нашел целых 3 не в UTF-8. Перекодировал, сохранил. Не помогло!

Полез в function.php темы. Вычистил его содержимое полностью. Помогло! Ошибка исчезла.

Но без функций на сайте не будут работать нужные опции. Вернул содержимое на место и вырезал нижнюю половину. Естественно так, чтобы не оказалось перерубленных пополам функций. Делать подобные вещи надо по FTP. Но у меня других вариантов и не было.

Итак, вырезал последние 5-6 функций. Помогло!

Стал их возвращать по одной. Странное дело, оказалось, что сами функции на ошибку не влияют.  Я возвращал их в разном порядке, и ошибка проявлялась то на одной, то совсем на другой.

В итоге, начал удалять лишние переносы строк и пустые пробелы. После очередного сохранения проверил и… ОШИБКА ИСЧЕЗЛА!

Сохранил, сделал резервную копию сайта и перекрестился.

Похоже, всё-таки что-то на хостинге с кодировкой. На другом работало без проблем. Впрочем, теперь уже не уверен, что ошибка не вылезет снова. Подождём.

С вами был Доктор Лексиум.
До новых постов.

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

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

  • Доктор Лексиум:

    Рад, что помогло.

  • Иван:

    Спасибо за статью! Решить проблему «Cookies заблокированы из-за неожиданного вывода на экран» помогли манипуляции в коде файла function.php темы. Не известно, сколько бы ещё искал причину:)

  • Derek:

    Попал к вам на страницу с гугла по схожему запросу… В моем случае дело оказалось в закрывающем теге ?> в файле подтемы functions.php, его быть не должно.

  • Во только не в плагинах было дело.

  • Так много слов, а виноват оказался сам -), а удалять темы или плагины не обязательно, достаточно их переименовать