PHP Как читать HTTP Raw Post Data

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

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

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)

Спасибо и наилучшими пожеланиями,
Petr

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

О проблеме:

  • Если я запускаю код на LAMP (Ubuntu 14.04 LTS), не работает
  • Если я запускаю код на LAMP (Ubuntu 14.04 LTS) и устанавливаю WireShark с Pcap, сервер падает — я должен переустановить Apache2
  • Если я запускаю код на WAMP (MS Windows Server 2008R2 x64 с XAMPP), все верно

С наилучшими пожеланиями,
Petr

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]