1--TEST-- 2libxml_get_external_entity_loader() display correct callable name 3--EXTENSIONS-- 4dom 5--SKIPIF-- 6<?php if (PHP_OS_FAMILY == 'Windows') die('skip PTY is not supported on Windows'); ?> 7--FILE-- 8<?php 9 10$xml = <<<XML 11<!DOCTYPE foo PUBLIC "-//FOO/BAR" "http://example.com/foobar"> 12<foo>bar</foo> 13XML; 14 15$dtd = <<<DTD 16<!ELEMENT foo (#PCDATA)> 17DTD; 18 19class Handler { 20 public function handle($public, $system, $context) { 21 $descriptors = [["pty"], ["pty"], ["pty"], ["pipe", "w"]]; 22 $pipes = []; 23 return proc_open('echo "foo";', $descriptors, $pipes); 24 } 25} 26 27$o = new Handler(); 28libxml_set_external_entity_loader([$o, 'handle']); 29$dd = new DOMDocument; 30$r = $dd->loadXML($xml); 31 32try { 33 var_dump($dd->validate()); 34} catch (\Throwable $e) { 35 var_dump($e->getMessage()); 36} 37 38?> 39--EXPECT-- 40string(73) "DOMDocument::validate(): supplied resource is not a valid stream resource" 41