Skip to content

Commit 2cf34bc

Browse files
author
Moriyoshi Koizumi
committed
Add SERVER_PROTOCOL variable to $_SERVER. Patch by kuzuha. Thanks.
1 parent 465cb32 commit 2cf34bc

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

sapi/cli/php_cli_server.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,12 @@ static void sapi_cli_server_register_variables(zval *track_vars_array TSRMLS_DC)
571571
sapi_cli_server_register_variable(track_vars_array, "SERVER_SOFTWARE", tmp TSRMLS_CC);
572572
efree(tmp);
573573
}
574+
{
575+
char *tmp;
576+
spprintf(&tmp, 0, "HTTP/%d.%d", client->request.protocol_version / 100, client->request.protocol_version % 100);
577+
sapi_cli_server_register_variable(track_vars_array, "SERVER_PROTOCOL", tmp TSRMLS_CC);
578+
efree(tmp);
579+
}
574580
sapi_cli_server_register_variable(track_vars_array, "REQUEST_URI", client->request.request_uri TSRMLS_CC);
575581
sapi_cli_server_register_variable(track_vars_array, "REQUEST_METHOD", SG(request_info).request_method TSRMLS_CC);
576582
sapi_cli_server_register_variable(track_vars_array, "PHP_SELF", client->request.vpath TSRMLS_CC);
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
--TEST--
2+
SERVER_PROTOCOL header availability
3+
--SKIPIF--
4+
<?php
5+
include "skipif.inc";
6+
if (substr(PHP_OS, 0, 3) == 'WIN') {
7+
die ("skip not for Windows");
8+
}
9+
?>
10+
--FILE--
11+
<?php
12+
include "php_cli_server.inc";
13+
php_cli_server_start('var_dump($_SERVER["SERVER_PROTOCOL"]);');
14+
15+
list($host, $port) = explode(':', PHP_CLI_SERVER_ADDRESS);
16+
$port = intval($port)?:80;
17+
18+
$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
19+
if (!$fp) {
20+
die("connect failed");
21+
}
22+
23+
if(fwrite($fp, <<<HEADER
24+
GET / HTTP/1.1
25+
Host: {$host}
26+
27+
28+
HEADER
29+
)) {
30+
while (!feof($fp)) {
31+
echo fgets($fp);
32+
}
33+
}
34+
35+
fclose($fp);
36+
37+
$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
38+
if (!$fp) {
39+
die("connect failed");
40+
}
41+
42+
43+
if(fwrite($fp, <<<HEADER
44+
GET / HTTP/1.0
45+
Host: {$host}
46+
47+
48+
HEADER
49+
)) {
50+
while (!feof($fp)) {
51+
echo fgets($fp);
52+
}
53+
}
54+
55+
fclose($fp);
56+
?>
57+
--EXPECTF--
58+
HTTP/1.1 200 OK
59+
Host: %s
60+
Connection: closed
61+
X-Powered-By: PHP/%s-dev
62+
Content-type: text/html
63+
64+
string(8) "HTTP/1.1"
65+
HTTP/1.0 200 OK
66+
Host: %s
67+
Connection: closed
68+
X-Powered-By: PHP/%s-dev
69+
Content-type: text/html
70+
71+
string(8) "HTTP/1.0"

0 commit comments

Comments
 (0)