mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Fix Bug #55726 (Changing the working directory makes router script inaccessible)
This commit is contained in:
parent
6bd693543b
commit
5dbf73a866
1 changed files with 25 additions and 0 deletions
|
@ -1877,11 +1877,24 @@ static int php_cli_server_dispatch_router(php_cli_server *server, php_cli_server
|
|||
}
|
||||
{
|
||||
zend_file_handle zfd;
|
||||
#if HAVE_BROKEN_GETCWD
|
||||
int old_cwd_fd = -1;
|
||||
old_cwd_fd = open(".", 0);
|
||||
#else
|
||||
char *old_cwd;
|
||||
ALLOCA_FLAG(use_heap)
|
||||
#define OLD_CWD_SIZE 4096
|
||||
old_cwd = do_alloca(OLD_CWD_SIZE, use_heap);
|
||||
old_cwd[0] = '\0';
|
||||
php_ignore_value(VCWD_GETCWD(old_cwd, OLD_CWD_SIZE-1));
|
||||
#endif
|
||||
|
||||
zfd.type = ZEND_HANDLE_FILENAME;
|
||||
zfd.filename = server->router;
|
||||
zfd.handle.fp = NULL;
|
||||
zfd.free_filename = 0;
|
||||
zfd.opened_path = NULL;
|
||||
|
||||
zend_try {
|
||||
zval *retval = NULL;
|
||||
if (SUCCESS == zend_execute_scripts(ZEND_REQUIRE TSRMLS_CC, &retval, 1, &zfd)) {
|
||||
|
@ -1893,6 +1906,18 @@ static int php_cli_server_dispatch_router(php_cli_server *server, php_cli_server
|
|||
decline = 1;
|
||||
}
|
||||
} zend_end_try();
|
||||
|
||||
#if HAVE_BROKEN_GETCWD
|
||||
if (old_cwd_fd != -1) {
|
||||
fchdir(old_cwd_fd);
|
||||
close(old_cwd_fd);
|
||||
}
|
||||
#else
|
||||
if (old_cwd[0] != '\0') {
|
||||
php_ignore_value(VCWD_CHDIR(old_cwd));
|
||||
}
|
||||
free_alloca(old_cwd, use_heap);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (decline) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue