恥知らずのウェブエンジニア -web engineer, shameless

これは一歩を踏み出すことができない者たちのブログ

phpでライブラリを使わずにhttpリクエストのbodyを取得する方法

先日、業務中に少しテンパったので、メモ。


とあるサービスのAPIを利用する際、
コールバックのhttpリクエストのbodyの内容でごにょごにょする必要がありました。

その際、http_get_request_body()関数を使って、値を取得していました。
PHP: http_get_request_body - Manual


問題なく、動いていたので本番環境にリリース。

が、本番環境で動かない・・・

エラーログを確認すると、
http_get_request_body関数なんか知らないよ!
的な内容。


ファッ!?


よくよく調べるとhttp_get_request_body()関数は
peclなどでhttpモジュールを追加しなければいけないようです。
でなぜか開発にはhttpモジュールあって、本番環境にはない!

てっきり標準関数かと思ってた・・・
PHP: HTTP 拡張モジュールのインストール - Manual


なので、httpモジュール入れようとしたら、
なんかもろもろのバージョン依存で簡単に入れれないことが判明し、
代替えの関数を使って処理する方向に。


$_GET,$_POSTとかのノリでさくっと取れるかと思ったら、なかなか見つからない><

結論からすると下記で値取れました!

$body = file_get_contents('php://input');

ドキュメントはこちら
PHP: php:// - Manual


こんなんあったのか・・・




感謝致します。
f:id:ogataka50:20140915222330j:plain