|
|
|
@ -460,8 +460,7 @@ static size_t sapi_cgi_read_post(char *buffer, size_t count_bytes) |
|
|
|
while (read_bytes < count_bytes) { |
|
|
|
fcgi_request *request = (fcgi_request*) SG(server_context); |
|
|
|
if (request_body_fd == -1) { |
|
|
|
char *request_body_filename = sapi_cgibin_getenv((char *) "REQUEST_BODY_FILE", |
|
|
|
sizeof("REQUEST_BODY_FILE") - 1); |
|
|
|
char *request_body_filename = FCGI_GETENV(request, "REQUEST_BODY_FILE"); |
|
|
|
|
|
|
|
if (request_body_filename && *request_body_filename) { |
|
|
|
request_body_fd = open(request_body_filename, O_RDONLY); |
|
|
|
@ -515,7 +514,20 @@ static char *_sapi_cgibin_putenv(char *name, char *value) |
|
|
|
|
|
|
|
static char *sapi_cgi_read_cookies(void) |
|
|
|
{ |
|
|
|
return sapi_cgibin_getenv((char *) "HTTP_COOKIE", sizeof("HTTP_COOKIE") - 1); |
|
|
|
fcgi_request *request = (fcgi_request*) SG(server_context); |
|
|
|
|
|
|
|
return FCGI_GETENV(request, "HTTP_COOKIE"); |
|
|
|
} |
|
|
|
|
|
|
|
static void cgi_php_load_env_var(char *var, unsigned int var_len, char *val, unsigned int val_len, void *arg) |
|
|
|
{ |
|
|
|
zval *array_ptr = (zval*)arg; |
|
|
|
int filter_arg = (Z_ARR_P(array_ptr) == Z_ARR(PG(http_globals)[TRACK_VARS_ENV]))?PARSE_ENV:PARSE_SERVER; |
|
|
|
size_t new_val_len; |
|
|
|
|
|
|
|
if (sapi_module.input_filter(filter_arg, var, &val, strlen(val), &new_val_len)) { |
|
|
|
php_register_variable_safe(var, val, new_val_len, array_ptr); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void cgi_php_import_environment_variables(zval *array_ptr) |
|
|
|
@ -545,20 +557,12 @@ void cgi_php_import_environment_variables(zval *array_ptr) |
|
|
|
php_php_import_environment_variables(array_ptr); |
|
|
|
|
|
|
|
request = (fcgi_request*) SG(server_context); |
|
|
|
filter_arg = Z_ARR_P(array_ptr) == Z_ARR(PG(http_globals)[TRACK_VARS_ENV]) |
|
|
|
? PARSE_ENV : PARSE_SERVER; |
|
|
|
|
|
|
|
ZEND_HASH_FOREACH_STR_KEY_PTR(request->env, var, val) { |
|
|
|
size_t new_val_len; |
|
|
|
|
|
|
|
if (var && sapi_module.input_filter(filter_arg, var->val, &val, strlen(val), &new_val_len)) { |
|
|
|
php_register_variable_safe(var->val, val, new_val_len, array_ptr); |
|
|
|
} |
|
|
|
} ZEND_HASH_FOREACH_END(); |
|
|
|
fcgi_loadenv(request, cgi_php_load_env_var, array_ptr); |
|
|
|
} |
|
|
|
|
|
|
|
static void sapi_cgi_register_variables(zval *track_vars_array) |
|
|
|
{ |
|
|
|
fcgi_request *request = (fcgi_request*) SG(server_context); |
|
|
|
size_t php_self_len; |
|
|
|
char *php_self; |
|
|
|
|
|
|
|
@ -570,7 +574,7 @@ static void sapi_cgi_register_variables(zval *track_vars_array) |
|
|
|
if (CGIG(fix_pathinfo)) { |
|
|
|
char *script_name = SG(request_info).request_uri; |
|
|
|
unsigned int script_name_len = script_name ? strlen(script_name) : 0; |
|
|
|
char *path_info = sapi_cgibin_getenv("PATH_INFO", sizeof("PATH_INFO") - 1); |
|
|
|
char *path_info = FCGI_GETENV(request, "PATH_INFO"); |
|
|
|
unsigned int path_info_len = path_info ? strlen(path_info) : 0; |
|
|
|
|
|
|
|
php_self_len = script_name_len + path_info_len; |
|
|
|
@ -711,6 +715,7 @@ static void php_cgi_ini_activate_user_config(char *path, int path_len, const cha |
|
|
|
|
|
|
|
static int sapi_cgi_activate(void) |
|
|
|
{ |
|
|
|
fcgi_request *request = (fcgi_request*) SG(server_context); |
|
|
|
char *path, *doc_root, *server_name; |
|
|
|
uint path_len, doc_root_len, server_name_len; |
|
|
|
|
|
|
|
@ -721,7 +726,7 @@ static int sapi_cgi_activate(void) |
|
|
|
|
|
|
|
if (php_ini_has_per_host_config()) { |
|
|
|
/* Activate per-host-system-configuration defined in php.ini and stored into configuration_hash during startup */ |
|
|
|
server_name = sapi_cgibin_getenv("SERVER_NAME", sizeof("SERVER_NAME") - 1); |
|
|
|
server_name = FCGI_GETENV(request, "SERVER_NAME"); |
|
|
|
/* SERVER_NAME should also be defined at this stage..but better check it anyway */ |
|
|
|
if (server_name) { |
|
|
|
server_name_len = strlen(server_name); |
|
|
|
@ -755,7 +760,7 @@ static int sapi_cgi_activate(void) |
|
|
|
|
|
|
|
/* Load and activate user ini files in path starting from DOCUMENT_ROOT */ |
|
|
|
if (PG(user_ini_filename) && *PG(user_ini_filename)) { |
|
|
|
doc_root = sapi_cgibin_getenv("DOCUMENT_ROOT", sizeof("DOCUMENT_ROOT") - 1); |
|
|
|
doc_root = FCGI_GETENV(request, "DOCUMENT_ROOT"); |
|
|
|
/* DOCUMENT_ROOT should also be defined at this stage..but better check it anyway */ |
|
|
|
if (doc_root) { |
|
|
|
doc_root_len = strlen(doc_root); |
|
|
|
@ -984,8 +989,9 @@ static int is_valid_path(const char *path) |
|
|
|
*/ |
|
|
|
static void init_request_info(void) |
|
|
|
{ |
|
|
|
char *env_script_filename = sapi_cgibin_getenv("SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME") - 1); |
|
|
|
char *env_path_translated = sapi_cgibin_getenv("PATH_TRANSLATED", sizeof("PATH_TRANSLATED") - 1); |
|
|
|
fcgi_request *request = (fcgi_request*) SG(server_context); |
|
|
|
char *env_script_filename = FCGI_GETENV(request, "SCRIPT_FILENAME"); |
|
|
|
char *env_path_translated = FCGI_GETENV(request, "PATH_TRANSLATED"); |
|
|
|
char *script_path_translated = env_script_filename; |
|
|
|
char *ini; |
|
|
|
int apache_was_here = 0; |
|
|
|
@ -1013,25 +1019,25 @@ static void init_request_info(void) |
|
|
|
* of the script will be retreived later via argc/argv */ |
|
|
|
if (script_path_translated) { |
|
|
|
const char *auth; |
|
|
|
char *content_length = sapi_cgibin_getenv("CONTENT_LENGTH", sizeof("CONTENT_LENGTH") - 1); |
|
|
|
char *content_type = sapi_cgibin_getenv("CONTENT_TYPE", sizeof("CONTENT_TYPE") - 1); |
|
|
|
char *env_path_info = sapi_cgibin_getenv("PATH_INFO", sizeof("PATH_INFO") - 1); |
|
|
|
char *env_script_name = sapi_cgibin_getenv("SCRIPT_NAME", sizeof("SCRIPT_NAME") - 1); |
|
|
|
char *content_length = FCGI_GETENV(request, "CONTENT_LENGTH"); |
|
|
|
char *content_type = FCGI_GETENV(request, "CONTENT_TYPE"); |
|
|
|
char *env_path_info = FCGI_GETENV(request, "PATH_INFO"); |
|
|
|
char *env_script_name = FCGI_GETENV(request, "SCRIPT_NAME"); |
|
|
|
|
|
|
|
/* Hack for buggy IIS that sets incorrect PATH_INFO */ |
|
|
|
char *env_server_software = sapi_cgibin_getenv("SERVER_SOFTWARE", sizeof("SERVER_SOFTWARE") - 1); |
|
|
|
char *env_server_software = FCGI_GETENV(request, "SERVER_SOFTWARE"); |
|
|
|
if (env_server_software && |
|
|
|
env_script_name && |
|
|
|
env_path_info && |
|
|
|
strncmp(env_server_software, "Microsoft-IIS", sizeof("Microsoft-IIS") - 1) == 0 && |
|
|
|
strncmp(env_path_info, env_script_name, strlen(env_script_name)) == 0 |
|
|
|
) { |
|
|
|
env_path_info = _sapi_cgibin_putenv("ORIG_PATH_INFO", env_path_info); |
|
|
|
env_path_info = FCGI_PUTENV(request, "ORIG_PATH_INFO", env_path_info); |
|
|
|
env_path_info += strlen(env_script_name); |
|
|
|
if (*env_path_info == 0) { |
|
|
|
env_path_info = NULL; |
|
|
|
} |
|
|
|
env_path_info = _sapi_cgibin_putenv("PATH_INFO", env_path_info); |
|
|
|
env_path_info = FCGI_PUTENV(request, "PATH_INFO", env_path_info); |
|
|
|
} |
|
|
|
|
|
|
|
#define APACHE_PROXY_FCGI_PREFIX "proxy:fcgi://" |
|
|
|
@ -1066,8 +1072,8 @@ static void init_request_info(void) |
|
|
|
if (CGIG(fix_pathinfo)) { |
|
|
|
struct stat st; |
|
|
|
char *real_path = NULL; |
|
|
|
char *env_redirect_url = sapi_cgibin_getenv("REDIRECT_URL", sizeof("REDIRECT_URL") - 1); |
|
|
|
char *env_document_root = sapi_cgibin_getenv("DOCUMENT_ROOT", sizeof("DOCUMENT_ROOT") - 1); |
|
|
|
char *env_redirect_url = FCGI_GETENV(request, "REDIRECT_URL"); |
|
|
|
char *env_document_root = FCGI_GETENV(request, "DOCUMENT_ROOT"); |
|
|
|
char *orig_path_translated = env_path_translated; |
|
|
|
char *orig_path_info = env_path_info; |
|
|
|
char *orig_script_name = env_script_name; |
|
|
|
@ -1075,7 +1081,7 @@ static void init_request_info(void) |
|
|
|
int script_path_translated_len; |
|
|
|
|
|
|
|
if (!env_document_root && PG(doc_root)) { |
|
|
|
env_document_root = _sapi_cgibin_putenv("DOCUMENT_ROOT", PG(doc_root)); |
|
|
|
env_document_root = FCGI_PUTENV(request, "DOCUMENT_ROOT", PG(doc_root)); |
|
|
|
/* fix docroot */ |
|
|
|
TRANSLATE_SLASHES(env_document_root); |
|
|
|
} |
|
|
|
@ -1156,15 +1162,15 @@ static void init_request_info(void) |
|
|
|
if (orig_path_info) { |
|
|
|
char old; |
|
|
|
|
|
|
|
_sapi_cgibin_putenv("ORIG_PATH_INFO", orig_path_info); |
|
|
|
FCGI_PUTENV(request, "ORIG_PATH_INFO", orig_path_info); |
|
|
|
old = path_info[0]; |
|
|
|
path_info[0] = 0; |
|
|
|
if (!orig_script_name || |
|
|
|
strcmp(orig_script_name, env_path_info) != 0) { |
|
|
|
if (orig_script_name) { |
|
|
|
_sapi_cgibin_putenv("ORIG_SCRIPT_NAME", orig_script_name); |
|
|
|
FCGI_PUTENV(request, "ORIG_SCRIPT_NAME", orig_script_name); |
|
|
|
} |
|
|
|
SG(request_info).request_uri = _sapi_cgibin_putenv("SCRIPT_NAME", env_path_info); |
|
|
|
SG(request_info).request_uri = FCGI_PUTENV(request, "SCRIPT_NAME", env_path_info); |
|
|
|
} else { |
|
|
|
SG(request_info).request_uri = orig_script_name; |
|
|
|
} |
|
|
|
@ -1176,19 +1182,19 @@ static void init_request_info(void) |
|
|
|
*/ |
|
|
|
int snlen = strlen(env_script_name); |
|
|
|
if (snlen>slen && !strcmp(env_script_name+snlen-slen, path_info)) { |
|
|
|
_sapi_cgibin_putenv("ORIG_SCRIPT_NAME", orig_script_name); |
|
|
|
FCGI_PUTENV(request, "ORIG_SCRIPT_NAME", orig_script_name); |
|
|
|
env_script_name[snlen-slen] = 0; |
|
|
|
SG(request_info).request_uri = _sapi_cgibin_putenv("SCRIPT_NAME", env_script_name); |
|
|
|
SG(request_info).request_uri = FCGI_PUTENV(request, "SCRIPT_NAME", env_script_name); |
|
|
|
} |
|
|
|
} |
|
|
|
env_path_info = _sapi_cgibin_putenv("PATH_INFO", path_info); |
|
|
|
env_path_info = FCGI_PUTENV(request, "PATH_INFO", path_info); |
|
|
|
} |
|
|
|
if (!orig_script_filename || |
|
|
|
strcmp(orig_script_filename, pt) != 0) { |
|
|
|
if (orig_script_filename) { |
|
|
|
_sapi_cgibin_putenv("ORIG_SCRIPT_FILENAME", orig_script_filename); |
|
|
|
FCGI_PUTENV(request, "ORIG_SCRIPT_FILENAME", orig_script_filename); |
|
|
|
} |
|
|
|
script_path_translated = _sapi_cgibin_putenv("SCRIPT_FILENAME", pt); |
|
|
|
script_path_translated = FCGI_PUTENV(request, "SCRIPT_FILENAME", pt); |
|
|
|
} |
|
|
|
TRANSLATE_SLASHES(pt); |
|
|
|
|
|
|
|
@ -1218,9 +1224,9 @@ static void init_request_info(void) |
|
|
|
} |
|
|
|
path_translated[path_translated_len] = '\0'; |
|
|
|
if (orig_path_translated) { |
|
|
|
_sapi_cgibin_putenv("ORIG_PATH_TRANSLATED", orig_path_translated); |
|
|
|
FCGI_PUTENV(request, "ORIG_PATH_TRANSLATED", orig_path_translated); |
|
|
|
} |
|
|
|
env_path_translated = _sapi_cgibin_putenv("PATH_TRANSLATED", path_translated); |
|
|
|
env_path_translated = FCGI_PUTENV(request, "PATH_TRANSLATED", path_translated); |
|
|
|
efree(path_translated); |
|
|
|
} else if ( env_script_name && |
|
|
|
strstr(pt, env_script_name) |
|
|
|
@ -1237,9 +1243,9 @@ static void init_request_info(void) |
|
|
|
} |
|
|
|
path_translated[path_translated_len] = '\0'; |
|
|
|
if (orig_path_translated) { |
|
|
|
_sapi_cgibin_putenv("ORIG_PATH_TRANSLATED", orig_path_translated); |
|
|
|
FCGI_PUTENV(request, "ORIG_PATH_TRANSLATED", orig_path_translated); |
|
|
|
} |
|
|
|
env_path_translated = _sapi_cgibin_putenv("PATH_TRANSLATED", path_translated); |
|
|
|
env_path_translated = FCGI_PUTENV(request, "PATH_TRANSLATED", path_translated); |
|
|
|
efree(path_translated); |
|
|
|
} |
|
|
|
break; |
|
|
|
@ -1255,18 +1261,18 @@ static void init_request_info(void) |
|
|
|
* have failed anyway... we output 'no input file' now. |
|
|
|
*/ |
|
|
|
if (orig_script_filename) { |
|
|
|
_sapi_cgibin_putenv("ORIG_SCRIPT_FILENAME", orig_script_filename); |
|
|
|
FCGI_PUTENV(request, "ORIG_SCRIPT_FILENAME", orig_script_filename); |
|
|
|
} |
|
|
|
script_path_translated = _sapi_cgibin_putenv("SCRIPT_FILENAME", NULL); |
|
|
|
script_path_translated = FCGI_PUTENV(request, "SCRIPT_FILENAME", NULL); |
|
|
|
SG(sapi_headers).http_response_code = 404; |
|
|
|
} |
|
|
|
if (!SG(request_info).request_uri) { |
|
|
|
if (!orig_script_name || |
|
|
|
strcmp(orig_script_name, env_script_name) != 0) { |
|
|
|
if (orig_script_name) { |
|
|
|
_sapi_cgibin_putenv("ORIG_SCRIPT_NAME", orig_script_name); |
|
|
|
FCGI_PUTENV(request, "ORIG_SCRIPT_NAME", orig_script_name); |
|
|
|
} |
|
|
|
SG(request_info).request_uri = _sapi_cgibin_putenv("SCRIPT_NAME", env_script_name); |
|
|
|
SG(request_info).request_uri = FCGI_PUTENV(request, "SCRIPT_NAME", env_script_name); |
|
|
|
} else { |
|
|
|
SG(request_info).request_uri = orig_script_name; |
|
|
|
} |
|
|
|
@ -1280,27 +1286,27 @@ static void init_request_info(void) |
|
|
|
(script_path_translated != orig_script_filename && |
|
|
|
strcmp(script_path_translated, orig_script_filename) != 0)) { |
|
|
|
if (orig_script_filename) { |
|
|
|
_sapi_cgibin_putenv("ORIG_SCRIPT_FILENAME", orig_script_filename); |
|
|
|
FCGI_PUTENV(request, "ORIG_SCRIPT_FILENAME", orig_script_filename); |
|
|
|
} |
|
|
|
script_path_translated = _sapi_cgibin_putenv("SCRIPT_FILENAME", script_path_translated); |
|
|
|
script_path_translated = FCGI_PUTENV(request, "SCRIPT_FILENAME", script_path_translated); |
|
|
|
} |
|
|
|
if (!apache_was_here && env_redirect_url) { |
|
|
|
/* if we used PATH_TRANSLATED to work around Apache mod_fastcgi (but not mod_proxy_fcgi, |
|
|
|
* hence !apache_was_here) weirdness, strip info accordingly */ |
|
|
|
if (orig_path_info) { |
|
|
|
_sapi_cgibin_putenv("ORIG_PATH_INFO", orig_path_info); |
|
|
|
_sapi_cgibin_putenv("PATH_INFO", NULL); |
|
|
|
FCGI_PUTENV(request, "ORIG_PATH_INFO", orig_path_info); |
|
|
|
FCGI_PUTENV(request, "PATH_INFO", NULL); |
|
|
|
} |
|
|
|
if (orig_path_translated) { |
|
|
|
_sapi_cgibin_putenv("ORIG_PATH_TRANSLATED", orig_path_translated); |
|
|
|
_sapi_cgibin_putenv("PATH_TRANSLATED", NULL); |
|
|
|
FCGI_PUTENV(request, "ORIG_PATH_TRANSLATED", orig_path_translated); |
|
|
|
FCGI_PUTENV(request, "PATH_TRANSLATED", NULL); |
|
|
|
} |
|
|
|
} |
|
|
|
if (env_script_name != orig_script_name) { |
|
|
|
if (orig_script_name) { |
|
|
|
_sapi_cgibin_putenv("ORIG_SCRIPT_NAME", orig_script_name); |
|
|
|
FCGI_PUTENV(request, "ORIG_SCRIPT_NAME", orig_script_name); |
|
|
|
} |
|
|
|
SG(request_info).request_uri = _sapi_cgibin_putenv("SCRIPT_NAME", env_script_name); |
|
|
|
SG(request_info).request_uri = FCGI_PUTENV(request, "SCRIPT_NAME", env_script_name); |
|
|
|
} else { |
|
|
|
SG(request_info).request_uri = env_script_name; |
|
|
|
} |
|
|
|
@ -1322,19 +1328,19 @@ static void init_request_info(void) |
|
|
|
SG(request_info).path_translated = estrdup(script_path_translated); |
|
|
|
} |
|
|
|
|
|
|
|
SG(request_info).request_method = sapi_cgibin_getenv("REQUEST_METHOD", sizeof("REQUEST_METHOD") - 1); |
|
|
|
SG(request_info).request_method = FCGI_GETENV(request, "REQUEST_METHOD"); |
|
|
|
/* FIXME - Work out proto_num here */ |
|
|
|
SG(request_info).query_string = sapi_cgibin_getenv("QUERY_STRING", sizeof("QUERY_STRING") - 1); |
|
|
|
SG(request_info).query_string = FCGI_GETENV(request, "QUERY_STRING"); |
|
|
|
SG(request_info).content_type = (content_type ? content_type : "" ); |
|
|
|
SG(request_info).content_length = (content_length ? atol(content_length) : 0); |
|
|
|
|
|
|
|
/* The CGI RFC allows servers to pass on unvalidated Authorization data */ |
|
|
|
auth = sapi_cgibin_getenv("HTTP_AUTHORIZATION", sizeof("HTTP_AUTHORIZATION") - 1); |
|
|
|
auth = FCGI_GETENV(request, "HTTP_AUTHORIZATION"); |
|
|
|
php_handle_auth_data(auth); |
|
|
|
} |
|
|
|
|
|
|
|
/* INI stuff */ |
|
|
|
ini = sapi_cgibin_getenv("PHP_VALUE", sizeof("PHP_VALUE") - 1); |
|
|
|
ini = FCGI_GETENV(request, "PHP_VALUE"); |
|
|
|
if (ini) { |
|
|
|
int mode = ZEND_INI_USER; |
|
|
|
char *tmp; |
|
|
|
@ -1343,7 +1349,7 @@ static void init_request_info(void) |
|
|
|
efree(tmp); |
|
|
|
} |
|
|
|
|
|
|
|
ini = sapi_cgibin_getenv("PHP_ADMIN_VALUE", sizeof("PHP_ADMIN_VALUE") - 1); |
|
|
|
ini = FCGI_GETENV(request, "PHP_ADMIN_VALUE"); |
|
|
|
if (ini) { |
|
|
|
int mode = ZEND_INI_SYSTEM; |
|
|
|
char *tmp; |
|
|
|
@ -1463,7 +1469,7 @@ PHP_FUNCTION(fastcgi_finish_request) /* {{{ */ |
|
|
|
{ |
|
|
|
fcgi_request *request = (fcgi_request*) SG(server_context); |
|
|
|
|
|
|
|
if (request->fd >= 0) { |
|
|
|
if (!fcgi_is_closed(request)) { |
|
|
|
|
|
|
|
php_output_end_all(); |
|
|
|
php_header(); |
|
|
|
@ -1517,7 +1523,7 @@ int main(int argc, char *argv[]) |
|
|
|
int max_requests = 500; |
|
|
|
int requests = 0; |
|
|
|
int fcgi_fd = 0; |
|
|
|
fcgi_request request; |
|
|
|
fcgi_request *request; |
|
|
|
char *fpm_config = NULL; |
|
|
|
char *fpm_prefix = NULL; |
|
|
|
char *fpm_pid = NULL; |
|
|
|
@ -1813,12 +1819,12 @@ consult the installation file that came with this distribution, or visit \n\ |
|
|
|
php_import_environment_variables = cgi_php_import_environment_variables; |
|
|
|
|
|
|
|
/* library is already initialized, now init our request */ |
|
|
|
fcgi_init_request(&request, fcgi_fd); |
|
|
|
request = fcgi_init_request(fcgi_fd); |
|
|
|
|
|
|
|
zend_first_try { |
|
|
|
while (fcgi_accept_request(&request) >= 0) { |
|
|
|
while (fcgi_accept_request(request) >= 0) { |
|
|
|
request_body_fd = -1; |
|
|
|
SG(server_context) = (void *) &request; |
|
|
|
SG(server_context) = (void *) request; |
|
|
|
init_request_info(); |
|
|
|
char *primary_script = NULL; |
|
|
|
|
|
|
|
@ -1827,7 +1833,7 @@ consult the installation file that came with this distribution, or visit \n\ |
|
|
|
/* request startup only after we've done all we can to |
|
|
|
* get path_translated */ |
|
|
|
if (php_request_startup() == FAILURE) { |
|
|
|
fcgi_finish_request(&request, 1); |
|
|
|
fcgi_finish_request(request, 1); |
|
|
|
SG(server_context) = NULL; |
|
|
|
php_module_shutdown(); |
|
|
|
return FPM_EXIT_SOFTWARE; |
|
|
|
@ -1920,11 +1926,12 @@ fastcgi_request_done: |
|
|
|
|
|
|
|
requests++; |
|
|
|
if (max_requests && (requests == max_requests)) { |
|
|
|
fcgi_finish_request(&request, 1); |
|
|
|
fcgi_finish_request(request, 1); |
|
|
|
break; |
|
|
|
} |
|
|
|
/* end of fastcgi loop */ |
|
|
|
} |
|
|
|
fcgi_destroy_request(request); |
|
|
|
fcgi_shutdown(); |
|
|
|
|
|
|
|
if (cgi_sapi_module.php_ini_path_override) { |
|
|
|
|