Удаленный сервер периодически запрашивает мою страницу 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
получил и дать более сложное решение.
Результат (рабочий код):
<?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);
}
?>
О проблеме:
С наилучшими пожеланиями,
Petr
Других решений пока нет …