0

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>";
}
?>

私がcurlを使用しているxmlを投稿するには、これが問題であるかどうかわかりませんか?安全な接続(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;
 }
4

2 に答える 2

0

allow_url_fopenサーバーの設定がphp.iniからオンになっていることを確認してください。

そうは言っても、その設定に関するセキュリティ上の懸念に注意してください。

アップデート:

エラーがあるかどうかを確認し、エラーレポートをオンにして、スクリプトの上に次の2行を追加します。

ini_set('display_errors', true);
error_reporting(E_ALL);
于 2010-08-11T10:52:59.330 に答える
0

チェックする他のいくつかの事柄:

  1. php://inputフォームにある場合は利用できませんenctype=multipart/form-data
  2. php://input一度しか読むことができません(スクリプトに表示していない他の部分がない限り、可能性は低いです)
  3. LimitRequestBodyPOSTデータサイズはApacheおよび/またはPHPのupload_max_size/を超えませんpost_max_size

生の入力を読まなければならず、本質的にできない理由は何fwrite($outp, $_POST['xml'])ですか?

于 2010-08-11T13:04:06.390 に答える