2012-03-04 25 views
14

私は$ HTTP_RAW_POST_DATAの簡単なエコーを行うとき、私はエラーを取得:未定義の変数:HTTP_RAW_POST_DATA

Undefined variable: HTTP_RAW_POST_DATA 

私は、php.iniで、私はアンチック

always_populate_raw_post_data = On 

に必要であることを読んしかし、私それでもエラーが発生し、Apacheを再起動しました。イム使用してPHP 5.3.6

+0

どのWebサービスにもHTTP_RAW_POST_DATAを使用していますか? – Milap

+0

この例では、いいえ、私はこのページhttp://fpmaster.com/web-services-with-php-and-soap-1/を毎回フォローしてエラーが発生したため、エラーを調査するために1ページを作成しました。 –

答えて

24

あなたがrelevant manual entryごとに$HTTP_RAW_POST_DATAphp://inputストリームの使用を好む本当にすべき生のPOST本体にアクセスする必要がある場合:

php://input is a read-only stream that allows you to read raw data from the request body. In the case of POST requests, it is preferable to use php://input instead of $HTTP_RAW_POST_DATA as it does not depend on special php.ini directives. Moreover, for those cases where $HTTP_RAW_POST_DATA is not populated by default, it is a potentially less memory intensive alternative to activating always_populate_raw_post_data. php://input is not available with enctype="multipart/form-data".

ので、POST本体にアクセスするにはphp://input使用:

$post = file_get_contents('php://input'); 
+0

ありがとう、私は未定義に読んでいたときに私はこれを見たが、それを使用するためにdidntが考える。しかし、私は間違っていた、ありがとう! –

19

あなたが取得する場合

Notice: Undefined variable: HTTP_RAW_POST_DATA

お使いのサーバーのファイルを開いてください

$server->service($HTTP_RAW_POST_DATA); 

を見つけて、2行を次のように置き換えて追加します。

if (!isset($HTTP_RAW_POST_DATA)) $HTTP_RAW_POST_DATA =file_get_contents('php://input'); 
$server->service($HTTP_RAW_POST_DATA); 

これが役に立ちそうですか?

+0

ありがとう、トンの男... – San

+0

あなたの歓迎。お楽しみください.. @San – Milap

+0

私は石鹸サービスを使用し、それは多くの記事を検索し、彼らは私がAJAXを実装するために示唆され、実行しているとしてPHPのスクリプトから応答を得るためのアイデアを持っている私のHTMLフォームでそれを使うことができるように、それから応答を得るために... – San