From: Edin Kadribasic Date: Thu, 15 Aug 2002 22:27:03 +0000 (+0000) Subject: MFH (make apache2filter work with Apache 2.0.40) X-Git-Tag: php-4.2.3RC1~42 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=137c2c02d9b6d4e9dc68d1cc8dd35ea0b6d70cb1;p=php MFH (make apache2filter work with Apache 2.0.40) --- diff --git a/sapi/apache2filter/apache_config.c b/sapi/apache2filter/apache_config.c index 90a544415f..96b27ddbf2 100644 --- a/sapi/apache2filter/apache_config.c +++ b/sapi/apache2filter/apache_config.c @@ -165,9 +165,9 @@ const command_rec php_dir_cmds[] = "PHP Value Modifier"), AP_INIT_TAKE2("php_flag", php_apache_flag_handler, NULL, OR_OPTIONS, "PHP Flag Modifier"), - AP_INIT_TAKE2("php_admin_value", php_apache_admin_value_handler, NULL, ACCESS_CONF, + AP_INIT_TAKE2("php_admin_value", php_apache_admin_value_handler, NULL, ACCESS_CONF|RSRC_CONF, "PHP Value Modifier (Admin)"), - AP_INIT_TAKE2("php_admin_flag", php_apache_admin_flag_handler, NULL, ACCESS_CONF, + AP_INIT_TAKE2("php_admin_flag", php_apache_admin_flag_handler, NULL, ACCESS_CONF|RSRC_CONF, "PHP Flag Modifier (Admin)"), AP_INIT_TAKE1("PHPINIDir", php_apache_phpini_set, NULL, RSRC_CONF, "Directory containing the php.ini file"), diff --git a/sapi/apache2filter/sapi_apache2.c b/sapi/apache2filter/sapi_apache2.c index d1253302e9..9a63da6922 100644 --- a/sapi/apache2filter/sapi_apache2.c +++ b/sapi/apache2filter/sapi_apache2.c @@ -40,6 +40,7 @@ #include "http_main.h" #include "util_script.h" #include "http_core.h" +#include "ap_mpm.h" #include "php_apache.h" @@ -94,7 +95,10 @@ php_apache_sapi_header_handler(sapi_header_struct *sapi_header, sapi_headers_str val = strchr(sapi_header->header, ':'); - if (!val) return 0; + if (!val) { + sapi_free_header(sapi_header); + return 0; + } *val = '\0'; @@ -425,7 +429,9 @@ php_apache_server_shutdown(void *tmp) { apache2_sapi_module.shutdown(&apache2_sapi_module); sapi_shutdown(); +#ifdef ZTS tsrm_shutdown(); +#endif return APR_SUCCESS; } @@ -439,6 +445,15 @@ static void php_apache_add_version(apr_pool_t *p) static int php_pre_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp) { +#ifndef ZTS + int threaded_mpm; + + ap_mpm_query(AP_MPMQ_IS_THREADED, &threaded_mpm); + if(threaded_mpm) { + ap_log_error(APLOG_MARK, APLOG_CRIT, 0, 0, "Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP."); + return DONE; + } +#endif /* When this is NULL, apache won't override the hard-coded default * php.ini path setting. */ apache2_php_ini_path_override = NULL; @@ -470,8 +485,9 @@ php_apache_server_startup(apr_pool_t *pconf, apr_pool_t *plog, if (apache2_php_ini_path_override) { apache2_sapi_module.php_ini_path_override = apache2_php_ini_path_override; } - +#ifdef ZTS tsrm_startup(1, 1, 0, NULL); +#endif sapi_startup(&apache2_sapi_module); apache2_sapi_module.startup(&apache2_sapi_module); apr_pool_cleanup_register(pconf, NULL, php_apache_server_shutdown, apr_pool_cleanup_null); @@ -548,8 +564,8 @@ static void php_register_hook(apr_pool_t *p) ap_hook_post_config(php_apache_server_startup, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_insert_filter(php_insert_filter, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_post_read_request(php_post_read_request, NULL, NULL, APR_HOOK_MIDDLE); - ap_register_output_filter("PHP", php_output_filter, AP_FTYPE_RESOURCE); - ap_register_input_filter("PHP", php_input_filter, AP_FTYPE_RESOURCE); + ap_register_output_filter("PHP", php_output_filter, NULL, AP_FTYPE_RESOURCE); + ap_register_input_filter("PHP", php_input_filter, NULL, AP_FTYPE_RESOURCE); } AP_MODULE_DECLARE_DATA module php4_module = {