使用此函数时,请确保清除内部错误缓冲区。如果您没有这样做,并且您在长时间运行的进程中使用此函数,您可能会发现所有内存都被使用。
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
libxml_use_internal_errors — 禁用 libxml 错误并允许用户根据需要获取错误信息
libxml_use_internal_errors() 允许您禁用标准 libxml 错误并启用用户错误处理。
此函数返回 use_errors
的先前值。
版本 | 说明 |
---|---|
8.0.0 |
use_errors 现在可以为空。以前,它的默认值为 false 。 |
示例 #1 一个 libxml_use_internal_errors() 示例
此示例演示了 libxml 错误的基本用法以及此函数返回的值。
<?php
// 启用用户错误处理
var_dump(libxml_use_internal_errors(true));
// 加载文档
$doc = new DOMDocument;
if (!$doc->load('file.xml')) {
foreach (libxml_get_errors() as $error) {
// 在这里处理错误
}
libxml_clear_errors();
}
?>
上面的示例将输出
bool(false)
当使用 libxml_use_internal_errors(true) 时,并且接下来执行可能占用大量内存的操作(如 simplexml_load_string()),您最终可能会得到空白屏幕并且没有记录 PHP 错误,因为错误消息被抑制。
我们使用 set_error_handler() 的自定义错误处理程序,我发现在我调用
libxml_use_internal_errors(false);
它重置了我的 error_handler - 不确定这是不是 bug,我会将其报告为 bug - 然而,我需要重复调用 set_error_handler
(这让我困惑了一段时间)