卷曲不能在一台服务器上运行,但在所有其他服务器中运行正常

时间:2016-11-04 17:39:56

标签: php xml curl

下面的代码不能在一台服务器上运行,但在其他服务器上运行正常。我收到了这个错误:

Warning: simplexml_load_string(): Entity: line 1: parser error : Opening and ending tag mismatch: HR line 1 and body in testchecker.php on line 11
Warning: simplexml_load_string(): dden.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/5.5.20</h3></body> in testchecker.php on line 11
Warning: simplexml_load_string(): ^ in testchecker.php on line 11
Warning: simplexml_load_string(): Entity: line 1: parser error : Opening and ending tag mismatch: HR line 1 and html in testchecker.php on line 11
Warning: simplexml_load_string(): Entity: line 1: parser error : Premature end of data in tag body line 1 in testchecker.php on line 11
Warning: simplexml_load_string(): Entity: line 1: parser error : Premature end of data in tag html line 1 in testchecker.php on line 11
Warning: Invalid argument supplied for foreach() in testchecker.php on line 12


    <?php
set_time_limit(0);

$url="http://test";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);  
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$data = curl_exec($ch); 
curl_close($ch);
$xml = simplexml_load_string($data);
foreach($xml->User as $child){
    echo $child->Id."<br/>";        
}
?>

我不明白为什么会出现这个错误,因为在本地和其他服务器上它的工作正常。在dreamhost上,它不是。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:1)

错误消息已告诉您,出了什么问题

Warning: simplexml_load_string(): Entity: line 1: parser error : Opening and ending tag mismatch: HR line 1 and body in testchecker.php on line 11  
Warning: simplexml_load_string(): dden.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/5.5.20</h3></body> in testchecker.php on line 11

XML要求关闭所有标记,而使用HTML,您可以偶尔省略结束标记。

在这种情况下,您的<hr>标记没有相应的结束标记。这在HTML中完全有效。但是,它不是格式良好的XML,simplexml_load_string

需要它
  

<强>描述
  获取格式良好的XML字符串并将其作为对象返回。

答案 1 :(得分:0)

我已经解决了这个问题。 ip被阻止,因此禁止消息,而不是xml。 解锁ip解决了所有问题。