@@ -2106,12 +2106,6 @@ static int php_cli_server_dispatch_router(php_cli_server *server, php_cli_server
2106
2106
{
2107
2107
int decline = 0 ;
2108
2108
zend_file_handle zfd ;
2109
- char * old_cwd ;
2110
-
2111
- ALLOCA_FLAG (use_heap )
2112
- old_cwd = do_alloca (MAXPATHLEN , use_heap );
2113
- old_cwd [0 ] = '\0' ;
2114
- php_ignore_value (VCWD_GETCWD (old_cwd , MAXPATHLEN - 1 ));
2115
2109
2116
2110
zfd .type = ZEND_HANDLE_FILENAME ;
2117
2111
zfd .filename = server -> router ;
@@ -2133,12 +2127,6 @@ static int php_cli_server_dispatch_router(php_cli_server *server, php_cli_server
2133
2127
}
2134
2128
} zend_end_try ();
2135
2129
2136
- if (old_cwd [0 ] != '\0' ) {
2137
- php_ignore_value (VCWD_CHDIR (old_cwd ));
2138
- }
2139
-
2140
- free_alloca (old_cwd , use_heap );
2141
-
2142
2130
return decline ;
2143
2131
}
2144
2132
/* }}} */
@@ -2330,10 +2318,20 @@ static int php_cli_server_ctor(php_cli_server *server, const char *addr, const c
2330
2318
2331
2319
if (router ) {
2332
2320
size_t router_len = strlen (router );
2333
- _router = pestrndup (router , router_len , 1 );
2334
- if (!_router ) {
2335
- retval = FAILURE ;
2336
- goto out ;
2321
+ if (!IS_ABSOLUTE_PATH (router , router_len )) {
2322
+ _router = pemalloc (server -> document_root_len + router_len + 2 , 1 );
2323
+ if (!_router ) {
2324
+ retval = FAILURE ;
2325
+ goto out ;
2326
+ }
2327
+ snprintf (_router ,
2328
+ server -> document_root_len + router_len + 2 , "%s%c%s" , server -> document_root , DEFAULT_SLASH , router );
2329
+ } else {
2330
+ _router = pestrndup (router , router_len , 1 );
2331
+ if (!_router ) {
2332
+ retval = FAILURE ;
2333
+ goto out ;
2334
+ }
2337
2335
}
2338
2336
server -> router = _router ;
2339
2337
server -> router_len = router_len ;
0 commit comments