【问题标题】:Unknown problem with PHP's XML parsing functionsPHP 的 XML 解析函数的未知问题
【发布时间】:2010-06-29 12:06:49
【问题描述】:

我正在使用 SimpleXML 的 PHP4 实现,它使用 PHP 4 中的内置 xml_* 函数。我有一个奇怪的问题,由于没有错误报告,我无法诊断> 在服务器上并且无法打开 error_reporting

我已修改 Parse() 函数以包含以下内容:

[stuff here to initialise the parser]
echo '<textarea rows="8" cols="50">', htmlspecialchars($this->xml), '</textarea>';
$parsed = xml_parse($this->parser, $this->xml) or die('error with xml_parse function');

textarea 可以很好地显示 XML,并且 XML 本身是完全有效的。但页面随即停止,似乎没有调用xml_parse 函数,也没有输出“死亡”消息。

还应该补充一点,这在其他页面上也可以正常工作,只是出于某种原因,这个特定页面似乎有问题。

这里会发生什么?还有其他方法可以调试吗?

【问题讨论】:

    标签: php xml


    【解决方案1】:

    是的,您可以通过将其添加到脚本中来进行调试:

    error_reporting(E_ALL);
    

    这样会开启错误报告。

    另外,使用‘or die’只有在函数调用之前返回错误值时才有效。如果发生致命错误,它无济于事。

    【讨论】:

      【解决方案2】:

      尝试设置错误报告,看看会出现什么错误,很可能会出现一些致命错误:

      ini_set('display_errors', true);
      error_reporting(E_ALL);
      

      【讨论】:

        【解决方案3】:

        尝试获取特定于 XML 的解析器错误消息:

        echo xml_error_string(xml_error_code($parser));
        

        IIRC,无论您的错误报告设置为什么,这些默认情况下都不会输出。

        参考:

        【讨论】:

          【解决方案4】:

          问题似乎是由于 XML 对于解析器来说太大了。由于我们无法打开 error_reporting,因此无法获得正确的调试信息。

          我决定使用单独的脚本为页面生成 HTML,以避免页面偶尔出现问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-05-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多