Bug #69655 [Csd]: php -S changes MKCALENDAR request method to MKCOL
Edit report at https://bugs.php.net/bug.php?id=69655&edit=1
ID: 69655
Updated by: cmb@php.net
Reported by: markus at unterwaditzer dot net
Summary: php -S changes MKCALENDAR request method to MKCOL
Status: Closed
Type: Bug
Package: Built-in web server
Operating System: Linux
PHP Version: 5.6.9
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
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
for it.
Previous Comments:
------------------------------------------------------------------------
[2015-06-27 18:07:39] cmb@php.net
Automatic comment on behalf of cmb
Revision: http://git.php.net/?p=php-src.git;a=commit;h=bbe28d3a55f8b129d4595e5202b7c9891a568509
Log: Fixed #69655: php -S changes MKCALENDAR request method to MKCOL
------------------------------------------------------------------------
[2015-06-27 16:31:51] cmb@php.net
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. :)
------------------------------------------------------------------------
[2015-05-18 23:29:08] markus at unterwaditzer dot net
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?
------------------------------------------------------------------------
[2015-05-18 21:06:17] cmb@php.net
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).
------------------------------------------------------------------------
[2015-05-18 15:13:51] markus at unterwaditzer dot net
Description:
------------
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/
Test script:
---------------
<?php echo $_SERVER['REQUEST_METHOD']; ?>
Expected result:
----------------
The response body should be "MKCALENDAR".
Actual result:
--------------
The response body is "MKCOL".
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=69655&edit=1
Thread (7 messages)