私は、次のPHPファイルを持っている:PHPはHTTP POST(圧縮)JSONリクエストを解析していませんか?
<?php
// ***************************************************
if (!function_exists('gzdecode'))
{
function gzdecode($data)
{
// strip header and footer and inflate
return gzinflate(substr($data, 10, -8));
}
}
// ***************************************************
// get compressed (gzip) POST request into a string
$comprReq = file_get_contents('php://input');
// get decompressed POST request
$decomprReq = gzdecode($comprReq);
// decode to json
$jsonData = json_decode($decomprReq, true);
// create file if not exits or open file if exists
$file = fopen('omni.json', 'a');
if ($jsonData === null)
{
// mark as invalid and save. send HTTP response
fwrite($file, 'invalid json');
fclose($file);
header('HTTP/1.0 400 Bad Request');
}
else
{
// write json and save. send HTTP response
fwrite($file, $jsonData);
fclose($file);
header('HTTP/1.0 200 OK');
}
?>
アイデアは、それはJSON HTTP POST(圧縮 - gzip圧縮された)受け入れることで、新しいの終わりに、それを解凍し、(JSON形式)JSONを追加します(存在しない場合)または既存のjsonファイル。また、結果に応じて200 OKまたは400 BAD REQUEST HTTP応答コードを返す必要があります。
は、私は、次の送信することにより、Postmanでこれをテストしてみてください:
何も起こりません。サーバー上にJSONファイルが作成されません。レスポンスは常に200 OKです。
私が間違っていることは何ですか?
サーバーとファイルのパスでアクセス許可を確認してください。 Apacheがファイルを作成する権限を持つことはできません。 –
ちょうどいいよ。私はomni.jsonを自分で作成してみました(空)ので、PHPを作成しなくても開くことができます。 – Polis
fopen()またはfwrite()のいずれかの関数がfalseを返すかどうか確認できますか? – wigi