2009-10-14 42 views
0

好吧,這裏的規格:RSS工作正常我的開發服務器上,而不是在我的生活一個

開發服務器:Windows,WAMP,PHP 5+,笨

Live服務器:Ubuntu Linux操作系統,PHP,笨,LAMP

我得到以下從我的直播服務器在Firefox錯誤:

XML解析錯誤

:後文檔元素 位置垃圾:http://www.mysite.com/feed/rss2/ 2號線,1列:

語法錯誤,在... rss2.php

無論其意外T_STRING,一切就像在Windows BEAUT,在我的開發環境。

任何人都可以幫助我嗎?


下面的代碼:

function rss2() { 
    @header("Content-Type: text/xml"); 
    $settings = $this->db_model->get_db_settings(); 

    $data['encoding'] = 'utf-8'; 
    $data["feed_name"] = $settings["sitename"]; 
    $data["feed_url"] = base_url() . "feed/rss2"; 
    $data["page_description"] = "RSS Feed for " . $settings["sitename"]; 
    $data["page_language"] = "en-us"; 
    $data["creator_email"] = "[email protected]"; 

    $data["todays_date"] = date("c");  

    //Array? 
    $rssfeed = $this->blog_model->get_blog_posts_by_status("published"); 

    $i = 0; 
    foreach ($rssfeed as $row) { 
     //feed the details into the array 
     $rss_data[$i]["title"] = $row["title"]; 
     $rss_data[$i]["permalink"] = base_url() . "content/blog/" . $row["slug"]; 
     $rss_data[$i]["date"] = $row["date"]; 
     $rss_data[$i]["description"] = utf8_encode(html_entity_decode($row["content"], ENT_QUOTES));    
     $rss_data[$i]["category"] = "No Category"; 
     $i=1; 
    } 

    if ($i == 0) { 
     $data["rss_data"] = NULL; 
    } else { 
     $data["rss_data"] = $rss_data; 
    } 

    $this->load->view("system/feed/rss2", $data); 

} 
+1

擁有整個DIFF開發和生產服務器是不是一件好事。請發佈rss2.php的代碼。我們會看看它 – Shoban 2009-10-14 18:09:42

+1

檢查你是否錯過了任何;在你的代碼中。 – Shoban 2009-10-14 18:12:27

+0

謝謝。順便說一句,我用w3c驗證了rss視圖文件,它工作正常。我也在努力讓另一臺簡單的電腦一起安裝Ubuntu dev服務器。 – willbeeler 2009-10-14 18:19:07

回答

0

OK,有人幫我,如果這是完全錯誤的。我在Live服務器上解決了這個問題,在開發中仍然沒問題。我做的唯一的事情就是拿出的第一行的XML文檔中:

<?xml version="1.0" encoding="UTF-8"?> 

現在rss2.php文件看起來像這樣:

<rss version="2.0" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
    xmlns:admin="http://webns.net/mvcb/" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:content="http://purl.org/rss/1.0/modules/content/" 
    xmlns:atom="http://www.w3.org/2005/Atom"> 
    <channel> 
    <atom:link href="<?php echo base_url() . 'feed/rss2/'; ?>" rel="self" type="application/rss+xml" /> 
    <title><?php echo $feed_name; ?></title> 
    <link><?php echo $feed_url; ?></link> 
    <description><?php echo $page_description; ?></description> 
    <dc:language><?php echo $page_language; ?></dc:language> 
    <dc:creator><?php echo $creator_email; ?></dc:creator> 
    <dc:rights>Copyright <?php echo gmdate("Y", time()); ?></dc:rights> 
    <dc:date><?php echo $todays_date; ?></dc:date> 
    <admin:generatorAgent rdf:resource="http://www.codeigniter.com/" /> 

    <?php if ($rss_data == null) { ?> 

     <item> 
      <title>We're Sorry. There is no data to view.</title> 
      <link><?php echo base_url(); ?></link> 
      <guid><?php echo base_url(); ?>#When:<?php echo $todays_date; ?></guid> 
      <description></description> 
      <dc:subject></dc:subject> 
      <dc:date><?php echo $todays_date; ?></dc:date> 
     </item> 

    <?php } else { ?> 
    <?php foreach($rss_data as $row) { ?> 

     <item> 
      <title><?php echo xml_convert($row['title']); ?></title> 
      <link><?php echo $row['permalink']; ?></link> 
      <guid><?php echo $row['permalink']; ?>#When:<?php echo $row['date']; ?></guid> 
      <description><?php echo xml_convert($row['description']); ?></description> 
      <dc:subject><?php echo xml_convert($row['category']); ?></dc:subject> 
      <dc:date><?php echo $row['date']; ?></dc:date> 
     </item> 

    <?php } } ?> 

    </channel> 
</rss> 

一切工作像它應該而且是正確的?我不應該有編碼線嗎?讓我知道。提前致謝。

+0

對我來說,這基本上是封閉的。 – willbeeler 2009-10-15 19:26:56

+1

如果解決了您的問題,您應該將其標記爲答案,而不是重新提出問題。 – 2009-10-15 19:38:09

+0

對不起。會做。 – willbeeler 2009-10-16 23:12:39

1

聽起來像XML聲明開頭的<?被錯誤地識別爲PHP代碼塊,然後PHP解釋器將其扼殺。

我似乎記得(雖然這可能是相當錯誤的),關閉short_open_tags支持並不能阻止這個問題。

的解決方法是從PHP本身發出的聲明,就像這樣:

<?php echo('<?xml version="1.0" encoding="UTF-8"?>'); ?> 
相關問題