HTTP投稿を介してXMLファイルを受信します
-
27-09-2019 - |
質問
HTTP投稿を介して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;
}
解決
サーバーでそれを確認してください allow_url_fopen
設定はphp.iniからオンになります。
そうは言っても、注意してください セキュリティ上の懸念 その設定について。
アップデート:
エラーがあるかどうかを確認してください。エラーレポートをオンにし、これら2つの行をスクリプトの上に置きます。
ini_set('display_errors', true);
error_reporting(E_ALL);
他のヒント
チェックする他のいくつかのこと:
php://input
フォームがある場合は利用できませんenctype=multipart/form-data
php://input
一度だけ読むことができます(表示していないスクリプトに他の部分がない限り)- ポストデータサイズはApacheを超えません
LimitRequestBody
および/またはPHPのupload_max_size
/post_max_size
生の入力を読む必要があり、本質的にはできない理由 fwrite($outp, $_POST['xml'])
?
所属していません StackOverflow