php://input is empty on POST request
http, multipartform-data, php, post
Solution
Before PHP 5.4 `$HTTP_RAW_POST_DATA` is not available with `enctype="multipart/form-data"` (with the exception of some SAPI implementations), explanations here:
- http://www.php.net/manual/en/wrappers.php.php
- http://www.php.net/manual/en/ini.core.php#ini.always-populate-raw-post-data
I suggest you give a look to a couple of answers to existing questions:
- php http request content raw data enctype=multipart/form-data
- userland multipart/form-data handler
From PHP 5.4+ you can use the `php.ini` directive `enable_post_data_reading` to disable PHP consuming the raw data (hence process it), be aware that `$_POST` and `$_FILES` won't be populated though (refer to Vitaly Chirkov answer).
Problem
Problems with `multipart/form-data` forced me to parse POST request's parameters manually as I already doing for PUT requests. For that purpose I used this code: ``` $rawData = file_get_contents('php://input'); ``` But I figured that `php://input` is always empty for POSTs, at least, for `php-fpm` SAPI. Here is some pics from debugger. POST request: PUT with same params: Is there a way to get raw POST request body? Thanks in advance.