Vra

Ek het 'n toets script om 'n XML-lêer via http post ontvang en dit blyk te werk ok toe ek gebruik dit intern. Toe ek beweeg die script om 'n web bediener wat kan verkry word ekstern niks blyk te gebeur. Enigiemand enige idees?

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

Om die xml Ek gebruik krul, nie seker of dit die probleem te plaas? En ek is nie die stuur van 'n veilige verbinding (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;
 }
Was dit nuttig?

Oplossing

Maak seker dat jou bediener allow_url_fopen instellings aangeskakel uit php.ini.

Noudat dit gesê is, bewus te wees van veiligheid oor daardie instellings.

Update:

Probeer om te sien of daar enige fout, draai op fout verslagdoening, sit die twee lyne op die top van jou script:

ini_set('display_errors', true);
error_reporting(E_ALL);

Ander wenke

Sommige ander dinge om te kyk:

  1. php://input is nie beskikbaar indien die vorm het enctype=multipart/form-data
  2. php://input kan slegs gelees word sodra (waarskynlik nie, tensy daar is ander dele van jou script jy nie het getoon)
  3. POST data grootte nie meer as Apache se LimitRequestBody en / of PHP se upload_max_size / post_max_size

Enige rede moet jy die rou insette te lees en kan nie in wese doen fwrite($outp, $_POST['xml'])?

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top