![](/img/trans.png)
[英]My program crashes on the Windows machine yet it works fine on the Linux
[英]RSS Works fine on my Development Server, not on my Live one
好的,这是规格:
开发服务器:Windows,WAMP,PHP 5 +,Codeigniter
实时服务器:Ubuntu Linux,PHP,CodeIgniter,LAMP
我从Live Server收到Firefox中的以下错误:
XML解析错误:文档元素后出现垃圾信息位置: http : //www.mysite.com/feed/rss2/第2行,第1列:
语法错误,... rss2.php中出现意外的T_STRING
但是,在我的开发环境中,一切都像Windows中的漂亮工具一样工作。
谁能帮我?
这是代码:
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"] = "noreply@noreply.com";
$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);
}
听起来像<?
XML声明的开头被错误地识别为PHP代码块,然后PHP解释程序将其阻塞。
我似乎记得(尽管这可能是很错误的),关闭short_open_tags
支持并不能解决这个问题。
解决方法是从PHP本身发出声明,如下所示:
<?php echo( '<?xml version="1.0" encoding="UTF-8"?>' ); ?>
好,如果这全都不对,请有人帮我。 我在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>
一切都按预期进行,但这是正确的吗? 我不应该有该编码行吗? 让我知道。 提前致谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.