我有一个测试脚本通过http post接收xml文件,当我在内部使用它时似乎工作正常。当我将脚本移动到可以从外部访问的Web服务器时,似乎没有发生任何事情。任何想法?
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
$inp = fopen("php://input");
$outp = fopen("xmlfile" . date("YmdHis") . ".xml", "w");
while (!feof($inp)) {
$buffer = fread($inp, 8192);
fwrite($outp, $buffer);
}
fclose($inp);
fclose($outp);
echo "<html><head>test response</head><body>OK</body></html>";
}
?>
要发布xml我正在使用curl,不确定这是不是问题?而且我没有发送安全连接(HTTPS):
function httpsPost($Url, $xml_data)
{
//Initialisation
$ch=curl_init();
//Set parameters
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_URL, $Url);
//Return a variable instead of posting it directly
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Activate the POST method
curl_setopt($ch, CURLOPT_POST, 1);
//Request
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
//execute the connexion
$result = curl_exec($ch);
//Close it
curl_close($ch);
return $result;
}
答案 0 :(得分:0)
确保从您的服务器allow_url_fopen
设置已从php.ini打开。
话虽如此,请注意关于该设置的security concerns。
<强>更新强>
尝试查看是否有任何错误,启用错误报告,将这两行放在脚本之上:
ini_set('display_errors', true);
error_reporting(E_ALL);
答案 1 :(得分:0)
要检查的其他一些事项:
php://input
,则enctype=multipart/form-data
不可用
php://input
只能读取一次(不太可能,除非您的脚本还有其他部分未显示)LimitRequestBody
和/或PHP的upload_max_size
/ post_max_size
您必须阅读原始输入并且不能基本上执行fwrite($outp, $_POST['xml'])
?