Не работает RSS

#1 24 июня 2013 в 09:21
RSS перестал работать, не каких изменений не вносилось, все валидаторы ругаются на строку "

Ошибка в элементе верхнего уровня документа.
Строка: 1 Знак: 1

  1. &#65279;&#65279;<?xml version="1.0" encoding="utf-8" ?>

ru-fisher.ru/rss/catalog/1003/feed.rss
#2 24 июня 2013 в 09:29
Редактировали что-то связанное с генерацией RSS? всяко сохранили в cp-1251 и у вас теперь отступ есть перед первой строкой. Сохраните изменения в utf8 и будет все ок.

при скачке и просмотре файла у вас вот эти портянки:
...<?xml version="1.0" encoding="utf-8"?>

а должно быть чисто <?xml version="1.0" encoding="utf-8"?>
#3 25 июня 2013 в 07:00
вот сохраняю в utf-8, хотя он такой и был в utf-8


Скачал чистый дистрибутив и перезалил файл, та же проблема.

<?php
/******************************************************************************/
// //
// InstantCMS v1.10 //
// instantcms.ru/ //
// //
// written by InstantCMS Team, 2007-2012 //
// produced by InstantSoft, (www.instantsoft.ru) //
// //
// LICENSED BY GNU/GPL v2 //
// //
/******************************************************************************/

function rssfeed(){

$inCore = cmsCore::getInstance();
$inConf = cmsConfig::getInstance();

$cfg = $inCore->loadComponentConfig('rssfeed');

if(!$cfg['component_enabled']) { cmsCore::error404(); }

global $_LANG;

$do = cmsCore::request('do', 'str', 'rss');
$target = cmsCore::request('target', 'str', 'rss');
$item_id = cmsCore::request('item_id', 'str', 'all');

if(!$inCore->isComponentInstalled($target)) { cmsCore::error404(); }

if (!preg_match('/^([a-z0-9_\-]+)$/ui', $item_id)) { $item_id = 0; }

if ($item_id == 'all') { $item_id = 0; }

////////////////////// RSS /////////////////////////////////////////////////////////////////////////////////////////////////
if ($do=='rss'){

if (!file_exists(PATH.'/components/'.$target.'/prss.php')){ cmsCore::halt($_LANG['NOT_RSS_GENERATOR']); }

cmsCore::loadLanguage('components/'.$target);
cmsCore::includeFile('components/'.$target.'/prss.php');

$rssdata = call_user_func_array('rss_'.$target, array($item_id, $cfg));
if(!$rssdata){ cmsCore::halt($_LANG['NOT_RSS_GENERATOR']); }

$channel = $rssdata['channel'];
$items = $rssdata['items'];

if ($cfg['addsite']) { $channel['title'] .= ' :: '. $inConf->sitename; }
$channel['title'] = trim(htmlspecialchars(strip_tags($channel['title'])));

header('Content-Type: application/rss+xml; charset=utf-8');


$rss= '<?xml version="1.0" encoding="utf-8"?>' ."\n";
$rss .= '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">' ."\n";
$rss .= '<channel>' ."\n";
// Канал
$rss .= '<title>'.$channel['title'].'</title>' ."\n";
$rss .= '<link>'.$channel['link'].'</link>' ."\n";
$rss .= '<description><![CDATA['.trim(htmlspecialchars(strip_tags($channel['description']))).']]></description>' ."\n";

if ($cfg['icon_on']){
$rss .= '<image>'."\n";
$rss .= '<title>'.$channel['title'].'</title>'."\n";
$rss .= '<url>'.$cfg['icon_url'].'</url>'."\n";
$rss .= '<link>'.$channel['link'].'</link>'."\n";
$rss .= '</image>'."\n";
}

// Содержимое канала
if (is_array($items) && $items){
foreach ($items as $key=>$item){
$rss .= '<item>' ."\n";
$rss .= '<title>'.trim(htmlspecialchars(strip_tags($item['title']))).'</title>' ."\n";
$rss .= '<pubDate>'.date('r', strtotime($item['pubdate'])+($inConf->timediff*3600)).'</pubDate>' ."\n";
$rss .= '<guid>'.$item['link'].'</guid>' ."\n";
$rss .= '<link>'.$item['link'].'</link>' ."\n";
if (@$item['description']){
$rss .= '<description><![CDATA['.$item['description'].']]></description>' ."\n";
}
$rss .= '<category>'.$item['category'].'</category>' ."\n";
$rss .= '<comments>'.$item['comments'].'</comments>' ."\n";
if (@$item['image']){
$rss .= '<enclosure url="'.$item['image'].'" length="'.$item['size'].'" type="image/jpeg" />' ."\n";
}
$rss .= '</item>' ."\n";
}
}
$rss .= '</channel>' ."\n";
$rss .= '</rss>';

cmsCore::halt($rss);

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

$inCore->executePluginRoute($do);

}

?>
Забыл добавить, до обновления сайта до последней версии все работало исправно.
#4 25 июня 2013 в 11:47
Voblhned, Я вам говорю, у вас проблема именно с пустым отступом в первой строке, обычно он возникает при сохранении через FTP клиента который в режиме cp-1251 залил файл. Удалите старый файл rss, сгенерируйте новый, если кончено вы сами не правили вот эти строки:
  1. $rss= '<?xml version="1.0" encoding="utf-8"?>' ."\n";
  2. $rss .= '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">;' ."\n";
если так и не получиться могу помочь, только нужен будет ftp доступ
#5 25 июня 2013 в 12:55
kirkr, взял, скачал архив дистрибутива, из архива файл перезалил на сервер, проблема осталась.
Есть мысль что это хостинг такой косячный, как php может влиять на это? На прошлом хостинге, не было таких проблем.

Почему так думаю:

После того как сайт переехал ru-fisher.ru/ на новый хостинг, вверху сайта появился отступ, хотя сайт переехал и до переезда такого отступа не было. Тут php 5.4, может какие то настройки у него "кривые"
#6 25 июня 2013 в 20:28
для быстрого решения предлагаю посмотреть по ftp. 5.4 тут не влияет, только если файлы заливались в 1251. Попробуйте перезалить в бинарном виде. каким ftp клиентом пользуетесь?
#7 26 июня 2013 в 10:40


для быстрого решения предлагаю посмотреть по ftp. 5.4 тут не влияет, только если файлы заливались в 1251. Попробуйте перезалить в бинарном виде. каким ftp клиентом пользуетесь?

kirkr

net2ftp, потом Total Commander
#8 2 июля 2013 в 09:01
Как я понял, что в новой версии сломали RSS, надеюсь этот баг поправят в следующих версиях
#9 19 июля 2013 в 11:07
А у меня ещё интереснее получается:

1) Мигрирую 1.7 — 1.10.1 (всё правильно, по версиям, по шагам) — модуль rss работет, т.е. показывает исправно новости другого сайта.
2) Как только первый раз логинюсь админом, захожу в админку и тут же модуль перестаёт работать. Причём, модуль даже не открываю.
3) В другом случае, даже в админку не захожу, только по FTP гружу картинки в /images, и то же самое — модуль перестаёт работать! Мистика....
4) Танцы с бубном не помогают.
5) Итого 37 сайтов с одной и той же траблой. Пример: 1.doutuapse.ru

Хэлпу бы мне! Да побольше!
#10 20 июля 2013 в 00:44

Как я понял, что в новой версии сломали RSS, надеюсь этот баг поправят в следующих версиях

Voblhned
Даже не смешно!
#11 20 июля 2013 в 01:00
Олег с клещами, не подкажу ТС, там надо смотреть глубже, а у Вас однозначно не мистика, а просто кеш не может сохранить в папку /includes/rss/cache
Был такой трабл у заказчика, непомню точно, как решил, толи права на запись поднял, толи во фронтенде закомментировал запись в кеш…
Вобщем в этом и проблема, при добавлении нового канала проверьте эту папку, в ней должен появиться файл.
#12 30 октября 2014 в 05:38
Как решили данную проблему. У самого сейчас стало так с проектом
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.