2016-07-31 25 views
0

Ich kann nicht die Funktion libxml_set_external_entity_loader Arbeit innerhalb von Apache.libxml_set_external_entity_loader funktioniert nicht in httpd

Das ist mein test.php (nahm von http://php.net/manual/en/function.libxml-set-external-entity-loader.php):

<?php 
$xml = <<<XML 
<!DOCTYPE foo PUBLIC "-//FOO/BAR" "http://example.com/foobar"> 
<foo>bar</foo> 
XML; 

$dtd = <<<DTD 
<!ELEMENT foo (#PCDATA)> 
DTD; 

libxml_disable_entity_loader(false); 

libxml_set_external_entity_loader(
    function ($public, $system, $context) use($dtd) { 
     var_dump($public); 
     var_dump($system); 
     var_dump($context); 
     $f = fopen("php://temp", "r+"); 
     fwrite($f, $dtd); 
     rewind($f); 
     return $f; 
    } 
); 

$dd = new DOMDocument; 
$r = $dd->loadXML($xml); 

var_dump($dd->validate()); 

Das Ergebnis immer in Browser schlug fehl, wenn Zugriff auf diese Datei test.php:

Warning: DOMDocument::validate(http://example.com/foobar): failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in /www/test.php on line 28 

Warning: DOMDocument::validate(): I/O warning : failed to load external entity "http://example.com/foobar" in /www/test.php on line 28 

Warning: DOMDocument::validate(): Could not load the external subset "http://example.com/foobar" in /www/test.php on line 28 
bool(false) 

Während es mit PHP arbeitet in terminal:

Sowohl httpd und php wurden aus der Quelle auf Mac OS gebaut. phpinfo() Ergebnis wird hier hochgeladen https://dl.dropboxusercontent.com/u/11335326/phpinfo().html

Kann jemand darauf hinweisen, was das Problem ist? Vielen Dank!

Antwort

0

Rebaid httpd mit --enable-mpms-shared=all und dann hinzufügen LoadModule mpm_prefork_module modules/mod_mpm_prefork.so in httpd.conf löste dies.

+0

Hey Hoang, kannst du mir bitte mitteilen wie dieses Modul aktiviert werden kann? – akgola

+0

genau wie meine Antwort oben, hat nicht für Sie funktioniert? –