Re: Re: Bug? Raw POST data in PHP 5.2.2, take two
| From: | Johannes Schlüter | Date: | Sun, 06 May 2007 18:58:48 +0000 |
| Subject: | Re: Re: Bug? Raw POST data in PHP 5.2.2, take two | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-29221@lists.php.net to get a copy of this message | ||
Hello "Unknown",
you are wrong, the name is right please learn your lessons before
writing to internals.
To the original problem: Ilia committed a fix a few hours ago which
should fix the problem. Feel free to test a current snapshot.
johannes
On Sun, 2007-05-06 at 11:34 -0700, Unknown W. Brackets wrote:
> It sounds like you have register_globals off, which is a good thing imho.
>
> You are trying $HTTP_RAW_POST_DATA but my recollection tells me it is
> $_SERVER['HTTP_RAW_POST_DATA']. Does the latter work?
>
> Anyway, reading from php://input is more correct and doesn't depend on
> PHP settings as much, as far as I know.
>
> -[Unknown]
>
>
> -------- Original Message --------
>
> > I believe this is a bug in PHP 5.2.2. I've tried to report this for PHP
> > 5.2.2RC2 but apparently wasn't making myself clear or wasn't following
> > the proper procedures ...
> >
> > Anyway, as I wrote before[1], "raw" POST data isn't making it through in
> > PHP 5.2.2 which results in XML-RPC communications to fail, at least when
> > using the PEAR::XML_RPC package.
> >
> > Consider this little script (send.php):
> >
> > --- snip ---
> > <?php
> >
> > require_once 'XML/RPC.php';
> >
> > $sourceURI = 'http://www.example.com/'; //
> > doesn't matter here
> > $targetURI = $sourceURI;
> >
> > $client = new XML_RPC_Client('/receive.php', $_SERVER['HTTP_HOST']);
> > $client->setDebug(1);
> > $msg = new XML_RPC_Message('pingback.ping',
> > array(new XML_RPC_Value($sourceURI, 'string'),
> > new XML_RPC_Value($targetURI, 'string')));
> >
> > $response = $client->send($msg, 0, 'http');
> >
> > ?>
> > --- snip ---
> >
> > This makes a simple XML-RPC call as used for Pingbacks. For the
> > receiving end of the communication, let's use this as receive.php:
> >
> > --- snip ---
> > <?php
> >
> > print_r(getallheaders());
> >
> > echo $GLOBALS['HTTP_RAW_POST_DATA'] . "\n\n";
> >
> > ?>
> > --- snip ---
> >
> > Now when I call up send.php (both located in the web root of a server
> > running PHP 5.2.2), I get this output:
> >
> > ---GOT---
> > HTTP/1.1 200 OK
> > Date: Fri, 04 May 2007 20:07:58 GMT
> > Server: Apache/1.3.37 (Unix) PHP/5.2.2
> > X-Powered-By: PHP/5.2.2
> > Connection: close
> > Content-Type: text/html
> >
> > Array
> > (
> > [Content-Length] => 282
> > [Content-Type] => text/xml
> > [Host] => myhost.example.com
> > [User-Agent] => PEAR XML_RPC
> > )
> > <br />
> > <b>Notice</b>: Undefined index: HTTP_RAW_POST_DATA in <b>/usr/local/
> > apache/vhost/geeklog/public_html/receive.php</b> on line <b>5</b><br
> > />
> >
> > ---END---
> >
> > So $GLOBALS['HTTP_RAW_POST_DATA'] is not set. The PEAR::XML_RPC package
> > actually uses $HTTP_RAW_POST_DATA on the receiving end, but that doesn't
> > appear to be set either. And the always_populate_raw_post_data option in
> > php.ini doesn't make a difference.
> >
> > Switching back to PHP 5.2.1 (same machine, same configuration) makes
> > everything work as expected:
> >
> > ---GOT---
> > HTTP/1.1 200 OK
> > Date: Fri, 04 May 2007 20:11:28 GMT
> > Server: Apache/1.3.37 (Unix) PHP/5.2.1
> > X-Powered-By: PHP/5.2.1
> > Connection: close
> > Content-Type: text/html
> >
> > Array
> > (
> > [Content-Length] => 282
> > [Content-Type] => text/xml
> > [Host] => myhost.example.com
> > [User-Agent] => PEAR XML_RPC
> > )
> > <?xml version="1.0" encoding="UTF-8"?>
> > <methodCall>
> > <methodName>pingback.ping</methodName>
> > <params>
> > <param>
> >
> > <value><string>http://www.example.com/</string></value>
> > </param>
> > <param>
> >
> > <value><string>http://www.example.com/</string></value>
> > </param>
> > </params>
> > </methodCall>
> >
> > ---END---
> >
> > This is on a Linux box, but I have confirmation (thanks, Mike) of the
> > same thing happening on Windows.
> >
> > Can anyone please
> >
> > 1) confirm this or tell me what I'm doing wrong and
> > 2) tell me what else I should have done (other than posting here and
> > emailing Ilia, as the PHP 5 release manager), in case I ever run into
> > something similar again.
> >
> > Thanks.
> >
> > bye, Dirk
> >
> > [1] <http://news.php.net/php.internals/29103>
> >
> >
>