2010-08-11 4 views
0

У меня есть тестовый скрипт для получения xml-файла через http сообщение, и он работает нормально, когда я использую его внутри. Когда я перемещаю сценарий на веб-сервер, к которому можно получить доступ, внешне ничего не происходит. Какие-нибудь идеи?Получение xml-файла через http сообщение

<?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 Я использую завиток, не уверен, если это проблема? и я не отправляю на защищенное соединение (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

Убедитесь, что на вашем сервере allow_url_fopen настройка включена в php.ini.

Сказав это, имейте в виду security concerns об этой настройке.

Update:

Try, чтобы увидеть, если есть какая-либо ошибка, включите сообщения об ошибках, эти две линии на верхней части вашего скрипта:

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

Привет, да, он может быть установлен allow_url_fopen = On – thegunner

+0

@thegunner: Смотрите мое обновление, пожалуйста. – Sarfraz

+0

Привет, спасибо. Я пробовал, что, похоже, выдает какие-либо ошибки. в основном скрипт на веб-сервере - это только код выше + вашего обновления. Не уверен, в чем проблема! – thegunner

0

Некоторые другие вещи, чтобы проверить:

  1. php://input не доступна, если форма имеет enctype=multipart/form-data
  2. php://input можно прочитать только один раз (не вероятно, если нет других частей к вашему сценарию вы не показаны) размер данных
  3. POST не превышает апач LimitRequestBody и/или РНР upload_max_size/post_max_size

Любого причина, по которой вы должны прочитать исходный ввод и не можете сделать по существу fwrite($outp, $_POST['xml'])?

Смежные вопросы