Re: PHP build-in HTTP server and the HEAD method
| From: | Damien Tournoud | Date: | Wed, 12 Sep 2012 09:15:38 +0000 |
| Subject: | Re: PHP build-in HTTP server and the HEAD method | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-62953@lists.php.net to get a copy of this message | ||
On Wed, Sep 12, 2012 at 10:54 AM, Ivan Enderlin @ Hoa
<ivan.enderlin@hoa-project.net> wrote:
> Hello,
>
> It is probably me but it seems like the build-in HTTP server does not well
> support the HEAD method. Here is my following test case. First, the foo.php
> file:
>
> <?php
>
> var_dump($_SERVER['REQUEST_METHOD']);
By definition, a HEAD request MUST NOT return a message-body.
This works as expected:
<?php
header("X-Request-Method: " . $_SERVER["REQUEST_METHOD"]);
?>
Here is how it works: main/SAPI.c has code that set
SG(request_info).headers_only = 1 for HEAD requests, and as a
consequence php_request_shutdown() does not flush the output buffer
(if any) to the client. You can force a body to be sent (but that's
likely not going to work with every SAPI) by not having an output
buffer or by calling ob_end_flush() yourself.
Damien