我正在使用SimpleXML的PHP4实现,它使用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'消息。
还应该补充一点,这在其他页面上运行正常,出于某种原因,它似乎只是这个特定页面的问题。
这里可能发生什么?还有其他方法可以调试吗?
答案 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,以避免页面偶尔出现问题。