cURLを使用して、同じサイトのあるページから別のページにXMLを投稿しています。
配列からXMLを生成します(このビットは正常に機能します):
$xml = new SimpleXMLElement('<test/>');
array_walk_recursive($arr, array ($xml, 'addChild'));
$xmlxml = $xml->asXML()
次に、cURLを使用して別のページに投稿します。
$url = "http://www.test.com/feedtest.php";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlxml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
これにより、エラーが発生します。
警告:simplexml_load_file()[function.simplexml-load-file]:I / O警告: "xxxxx /の外部エンティティ"<?xml version = "1.0"?><test>[....]"を読み込めませんでした16行目のfeedtest.php"
私は何が間違っているのですか?
私はこれが他のページで起こっていることを追加する必要があります:
if ( $_SERVER['REQUEST_METHOD'] === 'POST' ){
$postFile = file_get_contents('php://input');
}
$xml = simplexml_load_file($postFile);
この最後の行は、エラーをトリガーする行です。