diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2018-01-12 18:11:12 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2018-01-12 18:11:12 +0100 |
commit | 9e98e99a3a88f98d1377d5b2a43b7ad223d8a61f (patch) | |
tree | 0100db4c5d81509c33eb60cd9e06af2edb155bfa /sapi/cli | |
parent | cecf734dc38449590ae689aed781f4cb7ade61be (diff) | |
download | php-git-9e98e99a3a88f98d1377d5b2a43b7ad223d8a61f.tar.gz |
Revert "Fixed bug #75287 (Builtin webserver crash after chdir in a shutdown function)"
This reverts commit 816758eda2bcdd69ba505fb6bbb79124a7bf2254.
After this commit relative router scripts were resolved against
docroot rather than shell cwd.
Diffstat (limited to 'sapi/cli')
-rw-r--r-- | sapi/cli/php_cli_server.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c index 82c1982650..17c854caad 100644 --- a/sapi/cli/php_cli_server.c +++ b/sapi/cli/php_cli_server.c @@ -2126,6 +2126,12 @@ static int php_cli_server_dispatch_router(php_cli_server *server, php_cli_server { int decline = 0; zend_file_handle zfd; + char *old_cwd; + + ALLOCA_FLAG(use_heap) + old_cwd = do_alloca(MAXPATHLEN, use_heap); + old_cwd[0] = '\0'; + php_ignore_value(VCWD_GETCWD(old_cwd, MAXPATHLEN - 1)); zfd.type = ZEND_HANDLE_FILENAME; zfd.filename = server->router; @@ -2147,6 +2153,12 @@ static int php_cli_server_dispatch_router(php_cli_server *server, php_cli_server } } zend_end_try(); + if (old_cwd[0] != '\0') { + php_ignore_value(VCWD_CHDIR(old_cwd)); + } + + free_alloca(old_cwd, use_heap); + return decline; } /* }}} */ @@ -2338,20 +2350,10 @@ static int php_cli_server_ctor(php_cli_server *server, const char *addr, const c if (router) { size_t router_len = strlen(router); - if (!IS_ABSOLUTE_PATH(router, router_len)) { - _router = pemalloc(server->document_root_len + router_len + 2, 1); - if (!_router) { - retval = FAILURE; - goto out; - } - snprintf(_router, - server->document_root_len + router_len + 2, "%s%c%s", server->document_root, DEFAULT_SLASH, router); - } else { - _router = pestrndup(router, router_len, 1); - if (!_router) { - retval = FAILURE; - goto out; - } + _router = pestrndup(router, router_len, 1); + if (!_router) { + retval = FAILURE; + goto out; } server->router = _router; server->router_len = router_len; |