Zend_Feed: белый экран смерти на Production, отлично работает на Dev Server - PullRequest
0 голосов
/ 11 декабря 2011

Несколько недель назад я заметил, что RSS-канал на моем сайте был прерван - у меня белый экран смерти. До этого все работало нормально. Остальная часть моего сайта продолжает работать нормально. Кроме того, идентичный код продолжает отлично работать на моем компьютере разработчика.

Никаких изменений кода не произошло, поэтому я предполагаю, что мой веб-хост изменил настройку сервера - но я понятия не имею, какой может быть настройка (поэтому я не знаю, есть ли обходной путь или мне нужно попросить моего веб-хостинга что-то изменить). Оба Prod & Dev работают на PHP 5.3.8.

Может ли кто-нибудь подсказать мне, что это за установка?

Единственное существенное отличие, которое я видел в заголовках ответов, заключалось в том, что мой (нерабочий) производственный RSS-канал имеет этот заголовок ответа: "Accept-Ranges: none".

Я дважды проверил вызов БД, заполняющий канал, и даже заменил его статическими данными в классе (на случай, если возникла проблема с БД), но это не имеет значения.

Код для соответствующего метода контроллера ниже:

    public function articlesAction(){
    $format = $this->_request->getParam('format');
    //default format to rss if unspecified
    $format = in_array($format, array('rss','atom')) ? $format : 'rss';

    $articles = new Application_Model_DbTable_Articles();
    $rows = $articles->getLatestArticlesForFeed();
        $channel = array(
            'title'         =>  'Feed of articles',
            'link'          =>  'http://www.mysite.co.uk',
            'description'   =>  'The latest articles and reviews from my site',
            'author'        =>  'My name',
            'language'      =>  'en',
            'ttl'           =>  '60',
            'copyright'     =>  '© the writers of the articles',
            'charset'       =>  'utf-8',
            'entries'       =>  array()
        );
        foreach ($rows as $item) {
            $articlelink = 'http://www.mysite.co.uk/articles/' . $item['stub'];
            $formattedlink = '<p><strong>Source: <a href="'.$articlelink.'">'.$articlelink.'</a></strong></p>';
            $channel['entries'][] = array(
                'title'         =>  $item['title'],
                'link'          =>  $articlelink,
                'guid'          =>  $articlelink,
                'description'   =>  $formattedlink . $item['content'] . '<p>© ' . $item['byline'] . ', ' . $item['copyright'] . '</p>' ,
                'lastUpdate'    =>  strtotime($item['date_published'])
            );
        }
        $feed = Zend_Feed::importArray($channel, $format);
        $feed->__wakeup();
    }
    $feed->send();
    $this->_helper->viewRenderer->setNoRender();
    $this->_helper->layout()->disableLayout();
}

1 Ответ

0 голосов
/ 25 февраля 2015

Я потратил час на то, чтобы понять, почему у меня WSOD только потому, что я инициировал класс с одной строчной буквой ...

$ table = new Model_DbTable_EshopSubcategories ();вместо

$ table = new Model_DbTable_EshopSubCategories ();

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

...