Моя среда — PHP 5.5.9, Nginx 1.4.6-1ubuntu3.2, localhost.
Я пытаюсь получить данные из метода PATCH, но это просто возвращает пустую строку …
С методом POST, который работает нормально, это часть моего скрипта:
case 'POST':
case 'PATCH':
$this->data = file_get_contents("php://input");
$ this-> data пусто при использовании метода PATCH и завершается при POST, я использую расширение POSTMAN chrome и отправляю данные RAW (не multipart / form-data)
Я думаю, что Nginx был виноват … но ничего в файл журнала …
Любая помощь будет высоко ценится !
Я недавно столкнулся с подобной проблемой, пытаясь получить доступ php://input
для запроса PUT. Проблема заключалась в том, что я уже обращался к нему один раз ранее (в функции ведения журнала, которая запускалась до рассматриваемого кода).
POST действует иначе, чем другие методы, что объясняет расхождение:
Примечание: до PHP 5.6 поток, открытый с помощью php: // input, мог быть прочитан только один раз; поток не поддерживает операции поиска. Однако, в зависимости от реализации SAPI, может быть возможно открыть другой поток ввода php: // и возобновить чтение. Это возможно только в том случае, если данные тела запроса были сохранены. Как правило, это касается запросов POST, но не других методов запроса, таких как PUT или PROPFIND.
источник: http://php.net/manual/en/wrappers.php.php
Решение было простым: сохранить значение php://input
от начального захвата до переменной PHP, и не пытайтесь запустить file_get_contents("php://input")
более одного раза для запроса не POST.
Других решений пока нет …