]> granicus.if.org Git - php/commitdiff
Apache does a full load, unload, load cycle for each DSO module.
authorAaron Bannert <aaron@php.net>
Wed, 24 Apr 2002 00:55:38 +0000 (00:55 +0000)
committerAaron Bannert <aaron@php.net>
Wed, 24 Apr 2002 00:55:38 +0000 (00:55 +0000)
This patch makes sure that any startup actions that are performed
for PHP don't happen until the second load (the second call to
the post_config hook), and it also prevents subsequent calls
to the initialization routines.

Suggested By:   Cliff Woolley

PR: 16475, 16754

sapi/apache2filter/sapi_apache2.c

index 30bff734dcd1e8b4beca3a5a83a3fe9b1b9e7c89..e512a89e8f9aa752e20fb8fb10665f5c997cd202 100644 (file)
@@ -447,6 +447,23 @@ static int
 php_apache_server_startup(apr_pool_t *pconf, apr_pool_t *plog,
                           apr_pool_t *ptemp, server_rec *s)
 {
+       void *data = NULL;
+       const char *userdata_key = "apache2filter_post_config";
+
+       /* Apache will load, unload and then reload a DSO module. This
+        * prevents us from starting PHP until the second load. */
+       apr_pool_userdata_get(&data, userdata_key, s->process->pool);
+       if (data == NULL) {
+               apr_pool_userdata_setn((const void *)1, userdata_key,
+                                                          apr_pool_cleanup_null, s->process->pool);
+               return OK;
+       }
+       else if (data == (const void *)2) {
+               return OK;
+       }
+       apr_pool_userdata_setn((const void *)2, userdata_key,
+                                                  apr_pool_cleanup_null, s->process->pool);
+
        /* Set up our overridden path. */
        if (apache2_php_ini_path_override) {
                apache2_sapi_module.php_ini_path_override = apache2_php_ini_path_override;