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