1
0
mirror of synced 2025-02-02 21:41:45 +03:00

XmlDriver: Avoid PHP bug #62577 by avoiding simplexml_load_file.

Doctrine is affected by PHP bug #62577. simplexml_load_file is not
able to load files if libxml_disable_entity_loader(true) has been
called. simplexml_load_file fails with the message:

I/O warning : failed to load external entity "/my/mappings/my_entity.dcm.xml"
in /path-to/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php on line 711

This error occurs even if there are no external entities in the XML file.

Waiting for the PHP bug to be resolved is infeasible, because it is
unresolved since years. Therefore Doctrine needs to circumvent the bug
by replacing simplexml_load_file with simplexml_load_string while getting
the file contents itself. simplexml_load_string is not affected by the
PHP bug.
This commit is contained in:
Aljosha Papsch 2017-08-18 14:23:43 +02:00
parent 60e29b40a0
commit eb762dea23

View File

@ -838,7 +838,7 @@ class XmlDriver extends FileDriver
protected function loadMappingFile($file)
{
$result = [];
$xmlElement = simplexml_load_file($file);
$xmlElement = simplexml_load_string(file_get_contents($file));
if (isset($xmlElement->entity)) {
foreach ($xmlElement->entity as $entityElement) {