4

リモート サーバーは定期的に HTTP HEAD 経由で PHP ページにクエリを実行します (KeepAlive のみをチェックしてください - これは機能します)。リモート サーバーがトリガーを登録すると、データと共に XML 形式が送信されます (POST 生形式)。どこが間違っているのか、入力データの読み方についての情報が見つかりません。

これを試してみましたが (エラーは表示されません)、結果は空です。

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) で実行)

4

1 に答える 1