我在通过 HTTP 加载文档时遇到了问题。我会收到类似这样的错误
警告:DOMDocument::load(http://external/document.xml): 无法打开流:HTTP 请求失败!HTTP/1.1 500 内部服务器错误
文档可以在浏览器中正常加载,也可以使用 wget 正常加载。问题在于,在我系统(OS X 和 Linux)上的 DOMDocument::load() 不会发送任何 User-Agent 标头,出于某种奇怪的原因,这会导致 Microsoft-IIS/6.0 返回 500 错误。
解决方案可以在 https://php.net/manual/en/function.libxml-set-streams-context.php 上找到
<?php
$opts = array(
'http' => array(
'user_agent' => 'PHP libxml agent',
)
);
$context = stream_context_create($opts);
libxml_set_streams_context($context);
// 通过 HTTP 请求文件
$doc = DOMDocument::load('http://www.example.com/file.xml');
?>