summaryrefslogtreecommitdiff
path: root/sapi/cli/php_cli_server.c
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2011-11-01 12:24:02 +0000
committerXinchen Hui <laruence@php.net>2011-11-01 12:24:02 +0000
commitac789e0bb6d7963c0bbb28229c601d944e33bcea (patch)
tree3a69110b3864ee22c94d989aa47e2ba294b8e153 /sapi/cli/php_cli_server.c
parent58a134fb48ec959ba2b2ff6d5385152cedd8a70c (diff)
downloadphp-git-ac789e0bb6d7963c0bbb28229c601d944e33bcea.tar.gz
Fixed Bug #60180 ($_SERVER["PHP_SELF"] incorrect)
Diffstat (limited to 'sapi/cli/php_cli_server.c')
-rw-r--r--sapi/cli/php_cli_server.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c
index 046c622e55..67df608672 100644
--- a/sapi/cli/php_cli_server.c
+++ b/sapi/cli/php_cli_server.c
@@ -579,13 +579,21 @@ static void sapi_cli_server_register_variables(zval *track_vars_array TSRMLS_DC)
}
sapi_cli_server_register_variable(track_vars_array, "REQUEST_URI", client->request.request_uri TSRMLS_CC);
sapi_cli_server_register_variable(track_vars_array, "REQUEST_METHOD", SG(request_info).request_method TSRMLS_CC);
- sapi_cli_server_register_variable(track_vars_array, "PHP_SELF", client->request.vpath TSRMLS_CC);
+ sapi_cli_server_register_variable(track_vars_array, "SCRIPT_NAME", client->request.vpath TSRMLS_CC);
if (SG(request_info).path_translated) {
sapi_cli_server_register_variable(track_vars_array, "SCRIPT_FILENAME", SG(request_info).path_translated TSRMLS_CC);
}
if (client->request.path_info) {
sapi_cli_server_register_variable(track_vars_array, "PATH_INFO", client->request.path_info TSRMLS_CC);
}
+ if (client->request.path_info_len) {
+ char *tmp;
+ spprintf(&tmp, 0, "%s%s", client->request.vpath, client->request.path_info);
+ sapi_cli_server_register_variable(track_vars_array, "PHP_SELF", tmp TSRMLS_CC);
+ efree(tmp);
+ } else {
+ sapi_cli_server_register_variable(track_vars_array, "PHP_SELF", client->request.vpath TSRMLS_CC);
+ }
if (client->request.query_string) {
sapi_cli_server_register_variable(track_vars_array, "QUERY_STRING", client->request.query_string TSRMLS_CC);
}
@@ -1330,6 +1338,16 @@ static void php_cli_server_request_translate_vpath(php_cli_server_request *reque
request->path_translated = buf;
request->path_translated_len = q - buf;
}
+#ifdef PHP_WIN32
+ {
+ uint i = 0;
+ for (;i<request->vpath_len;i++) {
+ if (request->vpath[i] == '\\') {
+ request->vpath[i] = '/';
+ }
+ }
+ }
+#endif
request->sb = sb;
} /* }}} */