Undefined переменная: HTTP_RAW_POST_DATA

когда я делаю простое эхо $HTTP_RAW_POST_DATA, я получаю сообщение об ошибке:

Undefined variable: HTTP_RAW_POST_DATA

Я прочитал, что в php.ini мне нужно отменить

always_populate_raw_post_data = On

но я все равно получаю сообщение об ошибке, и я перезапустил Apache. Im использует php 5.3.6

Ответ 1

Если вам нужно получить доступ к необработанному телу POST, вы действительно должны одобрить использование потока php://input поверх $HTTP_RAW_POST_DATA в соответствии с соответствующей записью вручную:

php://input - поток, доступный только для чтения, который позволяет вам читать исходные данные от органа запроса. В случае запросов POST предпочтительнее использовать вход php://вместо $HTTP_RAW_POST_DATA, поскольку он не зависят от специальных директив php.ini. Более того, для тех случаев, когда $HTTP_RAW_POST_DATA по умолчанию не заполняется, это потенциально менее энергоемкая альтернатива активации always_populate_raw_post_data. php://ввод недоступен с ENCTYPE = "многочастному/форм-данных".

Итак, для доступа к телу POST с помощью php://input:

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

Ответ 2

Если вы получаете

Примечание: переменная Undefined: HTTP_RAW_POST_DATA

Откройте файл сервера add find

$server->service($HTTP_RAW_POST_DATA);

и замените на следующие две строки.

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

Надеюсь, это поможет.