PHP的XML解析函数存在未知问题

时间:2010-06-29 12:06:50

标签: php xml

我正在使用SimpleXML的PHP​​4实现,它使用PHP 4中的内置xml_*函数。我有一个奇怪的问题,我无法诊断,因为没有错误报告< / strong>在服务器上,无法启用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函数,或输出'die'消息。

还应该补充一点,这在其他页面上运行正常,出于某种原因,它似乎只是这个特定页面的问题。

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

4 个答案:

答案 0 :(得分:0)

是的,你可以通过将其添加到你的脚本来调试它:

error_reporting(E_ALL);

这样就会打开错误报告。

此外,使用'或die'仅在函数调用之前返回falsey值时才有效。如果发生致命错误,则无济于事。

答案 1 :(得分:0)

尝试设置错误报告并查看错误,但可能会出现致命错误:

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

答案 2 :(得分:0)

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

echo xml_error_string(xml_error_code($parser));

IIRC,无论您的错误报告设置为何,都不会默认输出。

参考:

答案 3 :(得分:0)

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

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