HHVM DomDocument loadHTMLFile()不起作用。 BUG?

时间:2014-12-22 12:49:24

标签: php dom hhvm

我有这段代码:

$doc = new DOMDocument();
$doc->validateOnParse = true;
$doc->formatOutput = true;
$doc->loadHTMLFile($file);
$raw = $doc->saveHTML();

当我执行var_dump($raw)时,它会显示string(1) " "。有些事情显然是错误的。

var_dump($doc)输出

object(DOMDocument)#5228 (35) {
  ["recover"]=>
  bool(false)
  ["documentURI"]=>
  NULL
  ["strictErrorChecking"]=>
  bool(true)
  ["xmlStandalone"]=>
  bool(true)
  ["standalone"]=>
  bool(true)
  ["attributes"]=>
  NULL
  ["nodeValue"]=>
  NULL
  ["resolveExternals"]=>
  bool(false)
  ["childNodes"]=>
  string(22) "(object value omitted)"
  ["previousSibling"]=>
  NULL
  ["nodeName"]=>
  string(9) "#document"
  ["xmlVersion"]=>
  string(3) "1.0"
  ["lastChild"]=>
  NULL
  ["nodeType"]=>
  int(9)
  ["formatOutput"]=>
  bool(true)
  ["firstChild"]=>
  NULL
  ["parentNode"]=>
  NULL
  ["ownerDocument"]=>
  NULL
  ["config"]=>
  NULL
  ["prefix"]=>
  string(0) ""
  ["implementation"]=>
  string(22) "(object value omitted)"
  ["preserveWhiteSpace"]=>
  bool(true)
  ["documentElement"]=>
  NULL
  ["namespaceURI"]=>
  NULL
  ["baseURI"]=>
  NULL
  ["substituteEntities"]=>
  bool(false)
  ["textContent"]=>
  string(0) ""
  ["nextSibling"]=>
  NULL
  ["doctype"]=>
  NULL
  ["validateOnParse"]=>
  bool(true)
  ["version"]=>
  string(3) "1.0"
  ["actualEncoding"]=>
  NULL
  ["encoding"]=>
  NULL
  ["localName"]=>
  NULL
  ["xmlEncoding"]=>
  NULL
}

可能是什么问题?

#Update:

错误是loadHTMLFile()。它返回一个FALSE。但为什么?该文件的路径是正确的。

如果我改为:

$doc->loadHTML(file_get_contents($file));

它运作得很好。这是HHVM的错误吗?

1 个答案:

答案 0 :(得分:1)

HHVM(自版本3.3起)默认阻止所有外部资源。这是php.ini选项,可以再次启用它们:

hhvm.libxml.ext_entity_whitelist = file

您可以使用逗号分隔列表提供多个流包装器:​​

hhvm.libxml.ext_entity_whitelist = file,http