mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Merged GitHub PR #190: Support for the HTTP PATCH method in CLI webserver
This commit is contained in:
parent
1e1db9d9bb
commit
aa133ea282
4 changed files with 50 additions and 0 deletions
2
NEWS
2
NEWS
|
@ -5,6 +5,8 @@ PHP NEWS
|
||||||
- CLI server:
|
- CLI server:
|
||||||
. Changed response to unknown HTTP method to 501 according to RFC.
|
. Changed response to unknown HTTP method to 501 according to RFC.
|
||||||
(Niklas Lindgren).
|
(Niklas Lindgren).
|
||||||
|
. Support HTTP PATCH method. Patch by Niklas Lindgren, GitHub PR #190.
|
||||||
|
(Lars)
|
||||||
|
|
||||||
- Core:
|
- Core:
|
||||||
. Added optional second argument for assert() to specify custom message. Patch
|
. Added optional second argument for assert() to specify custom message. Patch
|
||||||
|
|
|
@ -81,6 +81,7 @@ static const char *method_strings[] =
|
||||||
, "HEAD"
|
, "HEAD"
|
||||||
, "POST"
|
, "POST"
|
||||||
, "PUT"
|
, "PUT"
|
||||||
|
, "PATCH"
|
||||||
, "CONNECT"
|
, "CONNECT"
|
||||||
, "OPTIONS"
|
, "OPTIONS"
|
||||||
, "TRACE"
|
, "TRACE"
|
||||||
|
@ -627,6 +628,8 @@ size_t php_http_parser_execute (php_http_parser *parser,
|
||||||
parser->method = PHP_HTTP_PROPFIND; /* or HTTP_PROPPATCH */
|
parser->method = PHP_HTTP_PROPFIND; /* or HTTP_PROPPATCH */
|
||||||
} else if (index == 1 && parser->method == PHP_HTTP_POST && ch == 'U') {
|
} else if (index == 1 && parser->method == PHP_HTTP_POST && ch == 'U') {
|
||||||
parser->method = PHP_HTTP_PUT;
|
parser->method = PHP_HTTP_PUT;
|
||||||
|
} else if (index == 1 && parser->method == PHP_HTTP_POST && ch == 'A') {
|
||||||
|
parser->method = PHP_HTTP_PATCH;
|
||||||
} else if (index == 2 && parser->method == PHP_HTTP_UNLOCK && ch == 'S') {
|
} else if (index == 2 && parser->method == PHP_HTTP_UNLOCK && ch == 'S') {
|
||||||
parser->method = PHP_HTTP_UNSUBSCRIBE;
|
parser->method = PHP_HTTP_UNSUBSCRIBE;
|
||||||
} else if (index == 4 && parser->method == PHP_HTTP_PROPFIND && ch == 'P') {
|
} else if (index == 4 && parser->method == PHP_HTTP_PROPFIND && ch == 'P') {
|
||||||
|
|
|
@ -80,6 +80,7 @@ enum php_http_method
|
||||||
, PHP_HTTP_HEAD
|
, PHP_HTTP_HEAD
|
||||||
, PHP_HTTP_POST
|
, PHP_HTTP_POST
|
||||||
, PHP_HTTP_PUT
|
, PHP_HTTP_PUT
|
||||||
|
, PHP_HTTP_PATCH
|
||||||
/* pathological */
|
/* pathological */
|
||||||
, PHP_HTTP_CONNECT
|
, PHP_HTTP_CONNECT
|
||||||
, PHP_HTTP_OPTIONS
|
, PHP_HTTP_OPTIONS
|
||||||
|
|
44
sapi/cli/tests/php_cli_server_018.phpt
Normal file
44
sapi/cli/tests/php_cli_server_018.phpt
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
--TEST--
|
||||||
|
Implement Req #61679 (Support HTTP PATCH method)
|
||||||
|
--SKIPIF--
|
||||||
|
<?php
|
||||||
|
include "skipif.inc";
|
||||||
|
?>
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
include "php_cli_server.inc";
|
||||||
|
php_cli_server_start(<<<'PHP'
|
||||||
|
var_dump($_SERVER['REQUEST_METHOD']);
|
||||||
|
PHP
|
||||||
|
);
|
||||||
|
|
||||||
|
list($host, $port) = explode(':', PHP_CLI_SERVER_ADDRESS);
|
||||||
|
$port = intval($port)?:80;
|
||||||
|
|
||||||
|
$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
|
||||||
|
if (!$fp) {
|
||||||
|
die("connect failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(fwrite($fp, <<<HEADER
|
||||||
|
PATCH / HTTP/1.1
|
||||||
|
Host: {$host}
|
||||||
|
|
||||||
|
|
||||||
|
HEADER
|
||||||
|
)) {
|
||||||
|
while (!feof($fp)) {
|
||||||
|
echo fgets($fp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose($fp);
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Host: %s
|
||||||
|
Connection: close
|
||||||
|
X-Powered-By: %s
|
||||||
|
Content-type: text/html
|
||||||
|
|
||||||
|
string(5) "PATCH"
|
Loading…
Add table
Add a link
Reference in a new issue