|
|
|
@ -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) { |
|
|
|
|