Edit report at https://bugs.php.net/bug.php?id=60826&edit=1
ID: 60826 Comment by: florian dot fernandez at navaho dot fr Reported by: clarkwise at gmail dot com Summary: raw POST data missing with chunked encoding, FastCGI Status: Assigned Type: Bug Package: CGI/CLI related Operating System: Windows XP PHP Version: 5.3.9 Assigned To: ab Block user comment: N Private report: N New Comment: I forgot to mention that this is on a Linux system Previous Comments: ------------------------------------------------------------------------ [2012-03-05 10:08:17] florian dot fernandez at navaho dot fr Same problem here. Apache 2.2.15 and PHP 5.3.10 running as FastCGI. POST datas sent with "Transfer-encoding: chunked" are not received as they should be. The raw request looks like this : POST receiveChunk.php HTTP/1.1 User-Agent: PECL::HTTP/1.7.2 (PHP/5.3.8) Host: www.test.fr Accept: */* Pragma: no-cache Connection: keep-alive Cache-Control: no-cache Content-Length: 682668 Transfer-Encoding: chunked Content-Type: text/html; charset=UTF-8 3ff4 (here, the datas) 0 and the request as the receiving script sees it : User-Agent: PECL::HTTP/1.7.2 (PHP/5.3.8) Host: www.test.fr Accept: */* Pragma: no-cache Connection: close Cache-Control: no-cache As you can see, the request body is empty. However, this problem does not occur when PHP runs as mod_php under Apache. Problem confirmed under PHP 5.3.8 and 5.3.9. I don't know if that is a PHP bug and maybe the developers could confirm or not that the request body are wrong before it reaches PHP. I think that it appears to be a mod_fcgid bug and should be reported as one to Apache bug list. Here are the scripts to reproduce the bug : sendChunk.php : <?php $fileContentToUp = 'ICAgICAgICAgIgICAgIA=='; $header_array = array( 'Pragma' => 'no-cache', 'Connection' => 'keep-alive', 'Cache-Control' => 'no-cache', 'Content-Length' => strlen($fileContentToUp) , 'Transfer-Encoding' => 'chunked' ); $options = array(headers => $header_array); $r = new HttpRequest('receiveChunk.php', HTTP_METH_POST, $options); $r->setContentType('text/html; charset=UTF-8'); $r->setBody($fileContentToUp); $result = $r->send(); echo '$r->getRawRequestMessage() => '; print_r($r->getRawRequestMessage()); echo "\n\n"; echo '$r->send()->getBody() => '; print_r($r->send()->getBody()); echo "\n\n"; ?> receiveChunk.php : <?php $HttpResponse = new HttpResponse(); echo 'http_get_request_header => '."\n"; print_r($HttpResponse->getRequestHeaders()); echo "\n\n"; echo 'http_get_request_body => '."\n"; print_r($HttpResponse->getRequestBody()); echo "\n\n"; ?> Hope that helps. ------------------------------------------------------------------------ [2012-03-01 20:24:53] clarkwise at gmail dot com Since I am using Windows XP, I'm stuck using IIS 5.1. When I have the opportunity to try nginx w/ chunkin or IIS 7.5, I'll update with further details. Thanks. ------------------------------------------------------------------------ [2012-03-01 08:31:15] a...@php.net @clarkwise at gmail dot com So could you confirm it works with nginx+chunkin? As well, it's was not hanging with IIS (v7.5) for me. Which IIS version do you have? ------------------------------------------------------------------------ [2012-02-09 19:17:27] a...@php.net I've additionally tested the two files on nginx with PHP as FCGI. The request simply doesn't go throught to PHP and nginx gives 401 back. I've attached gdb to the PHP and set a break in the accept loop - there was no reaction when using the two test files, but requests without data got down to PHP. So my conclusion were - apache simply ignores the request body where nginx gives a correct http status. Anyways, this has nothing to do with PHP. IIS, Apache and Nginx seem to have no implementation for chunked incoming body stuff, but they do handle that a different way. Btw. Nginx has the "chunkin" module for such actions. ------------------------------------------------------------------------ [2012-02-02 00:35:42] timo dot witte at googlemail dot com I have the same problem on my machine and can confirm this bug! i think this bug affects mod_spdy aswell, because it sends the POST data chunked! ( http://code.google.com/p/mod-spdy/issues/detail?id=22 ). ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=60826 -- Edit this bug report at https://bugs.php.net/bug.php?id=60826&edit=1