0

我最近在新服务器上设置了 apache 和 php,但是我在旧服务器上呈现 xml 的 php 代码没有在下面的新服务器上呈现错误显示。请有人帮助我:

XML Parsing Error: XML or text declaration not at start of entity
Location: `http://192.168.1.200/file.php`
Line Number 4, Column 1:<?xml version = "1.0" ?><rows><row id = '85'><cell>  </cell><cell> 85 </cell><cell image='folder.gif'> 55 </cell><cell> 61 </cell><cell> 2013-07-27 14:29:15 </cell><cell> ndegwa22@googlemail.com </cell><cell> salland@nts.nl </cell>
^

我的代码

<?php     
            require("config.php");
            header("Content-type:text/xml");
            echo "<?xml version = \"1.0\" ?>";
            echo "<rows>";

            $qry = "SELECT * FROM tickets WHERE parent_id = 0 ORDER BY message_id DESC";
            $res = mysql_query($qry) or die(mysql_error().$qry);

            while ($row = mysql_fetch_array($res))
            {
                echo "<row id = '{$row["id"]}'>";
                    echo "<cell> {$row["id"]} </cell>";
                    echo "<cell image='folder.gif'> {$row["ticket_id"]} </cell>";
                    echo "<cell> {$row["message_id"]} </cell>";
                    echo "<cell> {$row["date_time"]} </cell>";
                    echo "<cell> {$row["from_email"]} </cell>";
                    echo "<cell> {$row["to_email"]} </cell>";
                    echo "<cell> ".xmlEscape($row["subject"])." </cell>";  

                    echo "<cell><![CDATA[";

                        $ar = explode(";",$row["attachment"]);
                        foreach($ar as $key=>$value)
                        {
                            echo "<a target='_blank' href='Mail/attachments/{$value}'>{$value} </a>  &nbsp;";
                        }

                    echo "]]></cell>";
                    echo "<cell> {$row["eid"]}</cell>";
                    echo "<cell> {$row["email_status"]}</cell>";
                    echo "<cell> {$row["ticket_status"]}</cell>";
                    echo "<cell> {$row["entry_datetime"]}</cell>";

                    getChildMailXml($row["id"]);

                echo "</row>";
            }

            echo "</rows>";

?>

$(document).ready(function(){
    $('.selectpicker').selectpicker({
        style: 'btn-info',
        size: 4   
    });
});

应该可以正常工作

4

2 回答 2

1

header("Content-type:text/xml"); echo "<?xml version=\"1.0\" ?>";Place require("config.php");之前不应有任何空格、行或打印输出。这些行之后的文件。

<?php
    header("Content-type:text/xml");
    echo "<?xml version = \"1.0\" ?>";
    require("config.php");
    echo "<rows>";
    echo "<row id='1'><cell>1</cell></row>";
    echo "</rows>";
?>

config.php文件中不应有任何输出

于 2013-07-30T09:32:09.637 回答
0

根据错误信息:

XML 解析错误:XML 或文本声明不在实体位置的开头:...

Line Number 4, Column 1: <?xml version = "1.0" ?><rows><row id = '85'><cell>  </cell><cell> 85 </cell><cell image='folder.gif'> 55 </cell><cell> 61 </cell><cell> 2013-07-27 14:29:15 </cell><cell> ndegwa22@googlemail.com </cell><cell> salland@nts.nl </cell>
                         ^

您正在第四<?xml version = "1.0" ?>行输出 XML 声明 () 。如果您输出 XML 声明,您必须在第一行输出它,即第一(- 而不是第四行(!))。

修复脚本的输出以在第一行第一列输出它,你应该没问题。

从您显示的代码中看不到引入其他行的位置,但您可以放心,任何给出错误消息的内容都没有说谎,因此请放心,这实际上是第四行而不是第一行,需要解决这个问题

如果您不了解在何处以及为什么要引入这些其他行,请了解 PHP 如何将数据输出到客户端。由于输入和输出是编程中的一个基本领域,我建议您从介绍开始学习,然后阅读PHP 手册的所有第一章:

如果您想在只读旁边添加一些交互式学习,可以使用 codecademy 上的 PHP 轨道:

于 2013-07-30T09:23:14.553 回答