| Bug #41293 | HTTP_RAW_POST_DATA fails to ever be set | ||||
|---|---|---|---|---|---|
| Submitted: | 4 May 2007 7:50pm UTC | Modified: | 6 May 2007 4:34pm UTC | ||
| From: | jerome at rainstormconsulting dot com | Assigned to: | iliaa | ||
| Status: | Closed | Category: | HTTP related | ||
| Version: | 5.2.2 | OS: | linux (centos or ubuntu) | ||
| Votes: | 7 | Avg. Score: | 4.9 ± 0.3 | Reproduced: | 7 of 7 (100.0%) |
| Same Version: | 6 (85.7%) | Same OS: | 4 (57.1%) | ||
[4 May 2007 9:13pm UTC] sniper@php.net
Only happens with RPC stuff. (soap / xml-rpc /..). php://input is not affected.
[5 May 2007 2:10pm UTC] develar at gmail dot com
>> php://input is not affected only in start script, but in end script php://input is empty.
[6 May 2007 1:35pm UTC] sylvain at jamendo dot com
Are you aware that this is a *major* issue? All our xmlrpc backends are broken because of this bug, both with pear XML_RPC and XML_RPC2. Is there a workaround besides php://input ?
[6 May 2007 1:42pm UTC] jerome at rainstormconsulting dot com
Putting this in a file all my services include seems to be working,
but I only did this on a test machine, i will not upgrade our
production server until this is resolved though.
if (!isset($HTTP_RAW_POST_DATA)){
$HTTP_RAW_POST_DATA = file_get_contents('php://input');
}
[6 May 2007 2:06pm UTC] sylvain at jamendo dot com
I used the same fix as Jerome,
if (phpversion()=="5.2.2") $GLOBALS['HTTP_RAW_POST_DATA'] =
file_get_contents("php://input");
Anyway, this seems like a duplicate of a bug that appeared in 5.1.0 (cf
changelog)
I just can't believe there is no unit tests for this kind of bugs that
should never ever appear again.
[6 May 2007 4:34pm UTC] iliaa@php.net
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better.

Description: ------------ PHP 5.2.2 fails to ever have $HTTP_RAW_POST_DATA set despite the ini setting to being On Reproduce code: --------------- Server: <?php $server = new SoapServer('myservice.wsdl'); $server->setClass('MyService'); $server->handle(); client: <?php $client = new SoapClient('myservice.wsdl', array('trace' => 1, 'exceptions' => 1)); try { $client->doSomething(); } catch(SoapFault $e) { print 'Service failure, error message: '.$e->faultstring; } Expected result: ---------------- This should proceed with no problems, an already working service setup in a web application, functioning on both PHP 5.1.6 and PHP 5.2.1 with no issues at all. Should produce no error. Actual result: -------------- Service failure, error message: Bad Request. Can't find HTTP_RAW_POST_DATA You USUALLY only see this if you access the server file (say xmlrpc.php) directly without posting any data.