go to bug id or search bugs for
PHP's built-in web server changes the request method MKCALENDAR to MKCOL.
Serve the given test script with:
php -S localhost:8080 ./foobar.php
and do a test request with e.g.:
curl -X MKCALENDAR http://localhost:8080/
<?php echo $_SERVER['REQUEST_METHOD']; ?>
The response body should be "MKCALENDAR".
The response body is "MKCOL".
Add a Patch
Add a Pull Request
Actually, MKCALENDAR is not yet supported by the CLI server. When
I do the respective curl request, I get "curl: (52) Empty reply
from server" (PHP 5.6.8 and current master on Windows, curl
running on Cygwin).
Original discussion: https://github.com/fruux/sabre-dav/issues/603#issuecomment-103086001
Further bugs related to the HTTP request method (in either PHP itself or the HTTP parser it uses) include:
- No response/idling connection with MKCO or MKCOLL as request method.
- Empty reply with M as request method.
It seems http-parser includes some very complex logic to parse the HTTP method performantly: https://github.com/joyent/http-parser/blob/master/http_parser.c#L1008
Total armchair engineering here, but isn't it easier (and performant enough for the builtin server) to just pass the method on to PHP unparsed?
Indeed, Markus, the issue is not so much that MKCALENDAR is not
implemented, but that the request method parsing is buggy. For
unsupported methods the server is supposed to return "501 Not
Implemented", but that doesn't work for several cases, such as the
ones you've already mentionend. I'm working on a fix.
> [...] isn't it easier (and performant enough for the builtin
> server) to just pass the method on to PHP unparsed?
Certainly something to consider. However, that would not be a bug
fix, but a rather a behavioral change, which might even require an
RFC. Feel free to file a respective feature request. :)
Automatic comment on behalf of cmb
Log: Fixed #69655: php -S changes MKCALENDAR request method to MKCOL
The fix for this bug has been committed.
Thank you for the report, and for helping us make PHP better.
Wrt. MKCALENDAR, I have submitted request #69953 and will do a PR
>Certainly something to consider. However, that would not be a bug fix, but a rather a behavioral change, which might even require an RFC. Feel free to file a respective feature request. :)
I wouldn't consider it a behaviorial change, since existing PHP code is almost
impossible to get broken. The change from a higher perspective is that new
methods are supported: Concretely, all of them.