2015-01-21 3 views
4

удаленный сервер периодически запрашивает мою php-страницу через HTTP HEAD (проверьте только KeepAlive, это работает). Если удаленный сервер регистрирует триггер, он отправляет мне XML-формат с данными (в исходном необработанном формате). Я не могу найти, где ошибка или информация, как я могу прочитать входные данные.PHP Как читать HTTP-данные необработанной почты

Я пробую это (без ошибок), но результат пуст.

ini_set('always_populate_raw_post_data', 'On'); 

$data1 = file_get_contents('php://input'); 
//var_dump($data1); //NULL 
fwrite($fp, 'php://input: '.serialize($data1)."\n"); 

$data2 = $GLOBALS['HTTP_RAW_POST_DATA']; 
//var_dump($data2); //NULL 
fwrite($fp, 'GLOBALS HTTP_RAW_POST_DATA: '.serialize($data2)."\n"); 

$data3 = $HTTP_RAW_POST_DATA; 
//var_dump($data3); //NULL 
fwrite($fp, 'HTTP_RAW_POST_DATA: '.serialize($data3)."\n"); 

//print_r($_POST); //NULL 
fwrite($fp, 'POST: '.serialize($_POST)."\n"); 


$dataPOST = trim(file_get_contents('php://input')); 
$xmlData = simplexml_load_string($dataPOST); 
fwrite($fp, 'BETA: '.$xmlData."\n"); 

Результат в файле журнала:

HeadRequest at 2015-01-21 23:35:47 
====================================================== 
php://input: s:0:""; 
GLOBALS HTTP_RAW_POST_DATA: N; 
HTTP_RAW_POST_DATA: N; 
POST: a:0:{} 
BETA: 

О сервере: PHP версия 5.5.9, запустить сервер на Linux (Apache/2.4.7 (Ubuntu)

Спасибо и лучше с уважением, Петр

+0

В запросе HEAD нет данных POST ... – CBroe

+0

Вы использовали 'fopen' сначала для' $ fp'? – James

+0

Да, я использую fopen и т. Д. - здесь я добавляю только все методы, которые я пытаюсь читать значениями из HTTP RAW POST. – czWolfHunter

ответ

4

получил его и дать более сложное решение.

Результат (рабочий код):

<?php 
// validate read-only stream for read raw data from the request body 
if(file_get_contents('php://input')=='') 
{ 
    // THROW EXCEPTION 
} 
else 
{ 
    // get read-only stream for read raw data from the request body 
    $strRequest = file_get_contents('php://input'); 

    // import request to xml structure 
    $DOMDocumentRequest = new DOMDocument; 
    $DOMDocumentRequest->loadXML($strRequest);   
} 
?> 

О проблеме:

  • Если я запускаю код на ЛАМПА (Ubuntu 14.04 LTS), does't работа
  • Если я запускаю код на ЛАМПА (Ubuntu 14.04 LTS) и установить WireShark с PCAP, сервер упал - я должен переустановить Apache2
  • Если я запускаю код на WAMP (MS Windows Server 2008R2 x64 с XAMPP), Alll прав

С уважением, Petr

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