Warning about `$HTTP_RAW_POST_DATA` being deprecated
Solution 1:
It turns out that my understanding of the error message was wrong. I'd say it features very poor choice of words. Googling around shown me someone else misunderstood the message exactly like I did - see PHP bug #66763.
After totally unhelpful "This is the way the RMs wanted it to be." response to that bug by Mike, Tyrael explains that setting it to "-1" doesn't make just the warning to go away. It does the right thing, i.e. it completely disables populating the culprit variable. Turns out that having it set to 0 STILL populates data under some circumstances. Talk about bad design! To cite PHP RFC:
Change always_populate_raw_post_data INI setting to accept three values instead of two.
- -1: The behavior of master; don't ever populate $GLOBALS[HTTP_RAW_POST_DATA]
- 0/off/whatever: BC behavior (populate if content-type is not registered or request method is other than POST)
- 1/on/yes/true: BC behavior (always populate $GLOBALS[HTTP_RAW_POST_DATA])
So yeah, setting it to -1 not only avoids the warning, like the message said, but it also finally disables populating this variable, which is what I wanted.
Solution 2:
Been awhile until I came across this error. Put up my answer for anyone who may stumble upon this issue.
The error only means that you are sending an empty POST request. This error is commonly found on HTTPRequests with no parameters passed. To avoid this error, you can always add a parameter to the POST without changing the php.ini.
Like:
$.post(URL_HERE
,{addedvar : 'anycontent'}
,function(d){
doAnyHere(d);
}
,'json' //or 'html','text'
);
Solution 3:
I experienced the same issue on nginx server (DigitalOcean) - all I had to do is to log in as root
and modify the file /etc/php5/fpm/php.ini
.
To find the line with the always_populate_raw_post_data
I first run grep
:
grep -n 'always_populate_raw_post_data' php.ini
That returned the line 704
704:;always_populate_raw_post_data = -1
Then simply open php.ini
on that line with vi
editor:
vi +704 php.ini
Remove the semi colon to uncomment it and save the file :wq
Lastly reboot the server and the error went away.
Solution 4:
If you are using WAMP...
you should add or uncomment the property always_populate_raw_post_data
in php.ini
and set its value to -1
. In my case php.ini
is located in:
C:\wamp64\bin\php\php5.6.25\php.ini
..but if you are still getting the warning (as I was)
You should also set
always_populate_raw_post_data = -1
inphpForApache.ini
:
C:\wamp64\bin\php\php5.6.25\phpForApache.ini
If you can't find this file, open a browser window and go to:
http://localhost/?phpinfo=1
and look for the value of Loaded Configuration File key. In my case the
php.ini
used by WAMP is located in:
C:\wamp64\bin\apache\apache2.4.23\bin\php.ini
(symlink to C:\wamp64\bin\php\php5.6.25\phpForApache.ini)
Finally restart WAMP (or click restart all services)
Solution 5:
If the .htaccess
file not avilable create it on root folder and past this line of code.
Put this in .htaccess
file (tested working well for API)
<IfModule mod_php5.c>
php_value always_populate_raw_post_data -1
</IfModule>