ZF-5705: Zend_Controller_Request_Http::getHeader returns false for an "Content Type" lookup in some installations.
Description
The method for retrieving headers is not complete so when the method apache_request_headers() is not available false will be returned on some systems
This happens when the $SERVER does not contains 'HTTP_CONTENT_TYPE' but 'CONTENT_TYPE', since the system looks for HTTP + requestvar.
(line 950)
$temp = 'HTTP_' . strtoupper(str_replace('-', '_', $header)); if (!empty($_SERVER[$temp])) { return $_SERVER[$temp]; }
After the above the following could be added $temp = strtoupper(str_replace('-', '_', $header)); if (!empty($_SERVER[$temp])) { return $_SERVER[$temp]; }
Comments
Posted by Joe Gornick (jgornick) on 2011-05-09T19:39:51.000+0000
The issue here is that CONTENT_TYPE and CONTENT_LENGTH are not prefixed with HTTP_. The reason is because CONTENT_TYPE and CONTENT_LENGTH are not protocol specific meta-variables (http://www.ietf.org/rfc/rfc3875).
So, unless you have the apache_request_headers method available, the type and length of the request are never obtained for the request.
Posted by Aaron S. Hawley (ashawley) on 2011-05-09T19:51:37.000+0000
Never say, "never".
The current test in Zend_Controller_Request_HttpTest::testGetHeader() has
So it would seem some PHP environments do put HTTP_CONTENT_TYPE in $_SERVER.
I'm not sure what the appropriate patch to Zend_Controller_Request_Http is, but I know I add this to dispatch script (public/index.php).
Posted by Joe Gornick (jgornick) on 2011-05-09T20:31:17.000+0000
I'd be interested to find out what environments return HTTP_CONTENT_TYPE.
In regards to a patch for HTTP requests, I would say we try to load the requested meta variable without the HTTP prefix, then if not found, add the HTTP prefix and try that.
Posted by Bas K (bas) on 2011-05-10T15:30:19.000+0000
i believe when i submitted this issue i was developing on an CentOS 5 system with php5.2.something
Posted by Joe Gornick (jgornick) on 2011-05-10T15:38:23.000+0000
I'm experiencing it on Windows XP with Apache 2.2/PHP5.3.x.