Mysterious ‘headers already sent’ while handling php://input stream

A script that handled a php://input stream exited rather unexpectedly when it called session_start(). I had ‘track_errors’ enabled, so there was a message in $php_errormsg saying that headers had already been sent. But there was no file name or line number.

Fortunately the error log contained useful information: “PHP Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set ‘always_populate_raw_post_data’ to ‘-1’ in php.ini and use the php://input stream instead. in Unknown on line 0”.

The message must have been echoed, leading to the ‘headers already sent’ message when session_start tried to set a cookie.

Setting always_populate_raw_post_data to -1 in php.ini indeed made the error go away.

Hope this helps someone.

Leave a Reply

Your email address will not be published. Required fields are marked *

This form collects your name, email address and content so that we can keep track of the comments placed on the website. Check our privacy policy for more info on where, how and why we store your data.