Недавно я
обратил внимание на то, что FeedBurner перестал потреблять мои записи. Рассылка, разумеется, тоже заглохла. Ну ладно, написал в техподдержку, стал ждать.
Затем стало ясно, что новые записи не индексируются ни Гуглом, ни Яндексом. Блог медленно, но верно стал погружаться в небытие. Как-то это слегка настораживало. Я засучил рукава.
Проверка RSS-потока на валидность давала странный результат: сначала валидатор ругался на то, что ему возвращается ошибка 500 (Internal Server Error), но чуть ниже как ни в чем ни бывало разбирал синтаксис полученного RSS, причем со всеми новыми записями. Блин, думаю, ты уж определись - либо у тебя «ошибка 500», либо RSS-фид получается нормально. Кстати, сам я спокойно просматривал ту же самую ленту, которая выдавалась FeedBurner'у, и Opera никаких ошибок не показывала. Но валидатор был глух к моим проклятьям и по-прежнему считал природу моего RSS-потока дуальной: он есть и его нет. Частица и волна. Жизнь и смерть. Инь и янь. Однако меня восточная философия вместо RSS-фида не устраивала.
Совершенно сбитый с толку, я решил действовать кардинально. Не дождавшись за неделю ответа техподдержки, я снес фид из FeedBurner и создал его заново. Картина с буддизмом не изменилась, но слегка прояснилась. Стало ясно, что всем роботам типа Яндекса или Гугла мой сайт строил из себя загадочного и противоречивого шизофреника, а для людей работал исправно. Чтобы понять суть такой мистерии, я был готов уже пить зеленый чай и медитировать на весеннюю опадающую сакуру. Пришлось эмулировать медитацию черным чаем и падающим за окном снегом. Впав в транс, я начал шаманить.
Перво-наперво я воззвал к Гуглу на предмет слов «500» и «мастерхост». Это последнее что я помню из камлания, потому что следующее мое осознанное воспоминание - я просветленным взором разглядываю PHP-шную функцию
eval в коде блогодвижка. В ней и оказалось все дело.
Казалось бы, при чем тут? А вот однако... Если кто помнит, запись «
В помощь Голливуду» самомодифицирующаяся. В нее встроен PHP-код, генерирующий название несуществующего фильма. И используется
eval. Так вот, как только я переделал механизм иньекции и исключил из кода эту функцию, все чудесным образом ожило. Не спрашивайте меня, как это так бывает, просто запомните, кому надо.
Ну и подписываться заново надо на рассылку, извините, погорячился с тотальным ее уничтожением.