2011-12-11 73 views
0

几周前,我注意到我的现场网站上的RSS源被破坏 - 我得到了死亡的白屏。在那之前它一直工作得很好。我的网站的其余部分继续正常工作。另外,相同的代码继续在我的开发盒上完美工作。Zend_Feed:生产中的死亡白屏,在Dev Server上完美运行

没有发生任何代码变化,所以我猜我的虚拟主机已经改变了服务器设置 - 但我不知道该设置可能是什么(所以我不知道是否有解决方法,或者如果我需要要求我的虚拟主机改变一些东西)。 Prod & Dev都运行PHP 5.3.8。

任何人都可以给我一个线索,可能是什么设置?

我可以在响应头文件中看到的唯一主要区别是我的(非工作)生产RSS源具有此响应头:“Accept-Ranges:none”。

我已经仔细检查了填充Feed的数据库调用,甚至用类内的一些静态数据替换了它(以防出现数据库问题),但它没有区别。

代码下面的相关负责人方法:

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(); 
} 
+0

WSOD大部分时间都是由于某处致命错误造成的。在您的实时网站上启用错误报告以找出位置。或者只是看看你的日志 – PeeHaa

+0

对不起 - 应该提到我已经试过这个。我在ZF application.ini文件中将“phpSettings.display_startup_errors”和“phpSettings.display_errors”设置为1,用于Production和I *仍然*获取WSOD –

+0

并且在错误日志中是否有某些内容?也可以尝试添加:'error_reporting(E_ALL);' – PeeHaa

回答

0

我浪费了一个小时,一旦搞清楚为什么我只是因为我开始与一个小写字母A类WSOD ...

$表= new Model_DbTable_EshopSubcategories();而不是

$ table = new Model_DbTable_EshopSubCategories();

dev服务器不必区分大小写,生产服务器可以。