时间:2021-07-01 10:21:17 帮助过:0人阅读
主 要原因,通过firebug分析,可以发现在输出xml之前出现了空行,这个空行照成xml输出不正常,找遍所有原文件并没有任何输出空行或者类似功能语 句。使用ob_clean逐行调试,发现在其中一个文件加载后,输出出现了空行,最终发现是由于那个php文件结尾?>后有两行空行。将空行去掉, 问题解决输出正常。
究其原因,在网上搜索了相关资料,codeIgniter开发规范给出如下解释:
PHP闭合标签“?>” 在PHP中对PHP的分析器是可选的。 但是,如果使用闭合标签,任何由开发者,用户,或者FTP应用程序插入闭合标签后面的空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空 白页。因此,所有的php文件应该省略这个php闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这 个文件已经结束而不是被删节的。
// 错误的写法 INCORRECT <?php echo "Here's my code!"; ?> // 正确的写法 CORRECT: <?php echo "Here's my code!";
Demo:
test.php <?php header("Content-type:text/xml"); include_once('sys_common.php'); echo'<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"> <channel> <title><![CDATA[测试]]></title> <link><![CDATA[http://baidu.com]]></link> <description><![CDATA[测试空行输出]]></description> <language><![CDATA[zh-CN]]></language> <pubDate><![CDATA[18.11.2016 14:54:02]]></pubDate> <lastBuildDate><![CDATA[18.11.2016 14:54:02]]></lastBuildDate> </channel> </rss>'; // exit;
需要引入的系统文件sys_common.php
<?php // do someing // 注意:后边这个闭合标签需要去掉,这样上边引入的时候输出xml就不会出错了。 // ?>
OK,找到引入文件,去掉闭合标签的就OK!