1--TEST-- 2libxml_set_external_entity_loader() variation: restore original handler; returning NULL 3--SKIPIF-- 4<?php if (!extension_loaded('dom')) die('skip'); ?> 5--CLEAN-- 6<?php 7@unlink(__DIR__ . "/foobar.dtd"); 8--FILE-- 9<?php 10chdir(__DIR__); 11$xml = <<<XML 12<!DOCTYPE foo PUBLIC "-//FOO/BAR" "foobar.dtd"> 13<foo>bar</foo> 14XML; 15 16$dtd = <<<DTD 17<!ELEMENT foo (#PCDATA)> 18DTD; 19 20 21libxml_set_external_entity_loader( 22 function ($public, $system, $context) { 23 var_dump($public,$system); 24 return null; 25 } 26); 27 28$dd = new DOMDocument; 29$r = $dd->loadXML($xml); 30var_dump($dd->validate()); 31 32libxml_set_external_entity_loader(NULL); 33file_put_contents(__DIR__ . "/foobar.dtd", $dtd); 34var_dump($dd->validate()); 35 36echo "Done.\n"; 37 38--EXPECTF-- 39string(10) "-//FOO/BAR" 40string(%d) "%sfoobar.dtd" 41 42Warning: DOMDocument::validate(): Could not load the external subset "foobar.dtd" in %s on line %d 43bool(false) 44bool(true) 45Done. 46