When using this funtion, be sure to clear your internal error buffer. If you dn't and you are using this in a long running process, you may find that all your memory is used up.
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
libxml_use_internal_errors — libxmlエラーを無効にし、ユーザーが必要に応じてエラー情報を取得できるようにする
libxml_use_internal_errors() により、 標準のlibxmlエラーを無効にし、ユーザーによるエラー処理を有効にすることができます。
use_errors
ユーザーによるエラー処理を有効 (true
) または無効 (false
) にする。
無効にすると、既に存在する libxml のエラーもすべてクリアします。
この関数は、
use_errors
の前の値を返します。
バージョン | 説明 |
---|---|
8.0.0 |
use_errors は、nullable になりました。
これより前のバージョンでは、デフォルトは 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)
When using this funtion, be sure to clear your internal error buffer. If you dn't and you are using this in a long running process, you may find that all your memory is used up.
When using libxml_use_internal_errors(true), and perform a possibly memory intensive operation like simplexml_load_string() next, you might end up with a blank screen and no php error logged because the error message been suppressed.
We use a custom error handler using set_error_handler() I found that after I call
libxml_use_internal_errors(false);
It resets my error_handler - not sure if this is a bug or not, I will report it as a bug - however, I needed to repeat my call to set_error_handler
(did confuse me for a while)