当我在浏览器上打开XML(客户端2)的URL时,它会完美打开,但是当我尝试使用PHP中的simplexml_load_file打开相同的URL(完全复制并粘贴)时,我得到了错误,包括404(NOT找到)。有没有人有任何解决方案?
注意:我将客户的地址(URL)和PHP文件的路径更改为“/path/arquivo.php”。
<?php
$customers[1] = 'http://www.customer1.com.br/dados.xml';
$customers[2] = 'http://www.customer2.com.br/dados.xml';
$xml1 = simplexml_load_file ($customers[1]); // it works perfectly
$xml2 = simplexml_load_file ($customers[2]); // ERROR
我得到的错误
警告:file_get_contents(http://www.cliente2.com.br/dados.xml):无法打开流:HTTP请求失败!在第5行的/path/arquivo.php中找不到HTTP / 1.1 404
警告:simplexml_load_file():I / O警告:无法在第5行的/path/arquivo.php中加载外部实体“http://www.cliente2.com.br/dados.xml”
我在打开文件之前尝试使用libxml_disable_entity_loader (false);
,但错误仍然存在。
我正在使用Ubuntu 14.04.3 LTS,PHP 5.5.9。
我会感激任何帮助!
非常感谢!
答案 0 :(得分:3)
网络服务器似乎过滤掉了没有正确User-Agent
的请求。
因此,您需要使用curl
,传递用户代理(我刚刚使用了最新的Chrome用户代理)并获得了回复。
<?php
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://www.cliente2.com.br/dados.xml');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36');
$response = curl_exec($curl_handle);
curl_close($curl_handle);
//var_dump($response);
$xml = simplexml_load_string($response);
print_r($xml);
为长输出做好准备