Unexpected Extension Deinitializing on Startup

php.internals

Michael B Allen

19 years ago
Is there an Apache or PHP setting that would cause an extension to be deinitilized in the initial root process on startup? We have an extension that forks a process from the initial Apache root process and does privileged work. The regular Apache workers running as 'apache' communicate with this root process using a pipe and shared memory. We need that root process running. Anyway, I have a customer who is seeing the extension initialize, everything starts up great, and then the extension deinitialization routine is called. For any other extension this behavior probably goes unnoticed because (I suspect) the Apache worker processes do not see the deinitializtion. Only the root process (not sure about that). But for our extension, we need the root process working so the deinitialization kills our extension. Is there some kind of Apache process model setting or something like that or a bug that could cause the deinitialization routine to run? Env is CentOS 4.4 with stock packages (PHP 5.1.6). Any help with this would be greatly appreciated. Mike
-- Michael B Allen PHP Active Directory Kerberos SSO http://www.ioplex.com/

Derick Rethans

19 years ago
On Thu, 19 Apr 2007, Michael B Allen wrote:
> Is there an Apache or PHP setting that would cause an extension to be > deinitilized in the initial root process on startup?
It's an Apache thing. First it brings up all modules (like mod_php) to figure out which settings it supports. Then it shuts down everything. Then it starts the real start up process and initializes all modules again. regards, Derick
-- Derick Rethans http://derickrethans.nl | http://ez.no | http://xdebug.org

Michael B Allen

19 years ago
On Fri, 20 Apr 2007 09:20:26 +0200 (CEST) Derick Rethans <derick@php.net> wrote:
> On Thu, 19 Apr 2007, Michael B Allen wrote: > > > Is there an Apache or PHP setting that would cause an extension to be > > deinitilized in the initial root process on startup? > > It's an Apache thing. First it brings up all modules (like mod_php) to > figure out which settings it supports. Then it shuts down everything. > Then it starts the real start up process and initializes all modules > again.
Hi Derick, Is this behavior documented anywhere? I suppose I should just get on the Apache list and ask there ... Mike
-- Michael B Allen PHP Active Directory Kerberos SSO http://www.ioplex.com/

Derick Rethans

19 years ago
On Fri, 20 Apr 2007, Michael B Allen wrote:
> On Fri, 20 Apr 2007 09:20:26 +0200 (CEST) > Derick Rethans <derick@php.net> wrote: > > > On Thu, 19 Apr 2007, Michael B Allen wrote: > > > > > Is there an Apache or PHP setting that would cause an extension to be > > > deinitilized in the initial root process on startup? > > > > It's an Apache thing. First it brings up all modules (like mod_php) to > > figure out which settings it supports. Then it shuts down everything. > > Then it starts the real start up process and initializes all modules > > again. > > Is this behavior documented anywhere? I suppose I should just get on > the Apache list and ask there ...
Hmm, I don't know where this is documented. The Apache list might indeed be the best medium to ask. regards, Derick

Rasmus Lerdorf

19 years ago
Michael B Allen wrote:
> On Fri, 20 Apr 2007 09:20:26 +0200 (CEST) > Derick Rethans <derick@php.net> wrote: > >> On Thu, 19 Apr 2007, Michael B Allen wrote: >> >>> Is there an Apache or PHP setting that would cause an extension to be >>> deinitilized in the initial root process on startup? >> It's an Apache thing. First it brings up all modules (like mod_php) to >> figure out which settings it supports. Then it shuts down everything. >> Then it starts the real start up process and initializes all modules >> again. > > Hi Derick, > > Is this behavior documented anywhere? I suppose I should just get on > the Apache list and ask there ...
This question has probably been asked a hundred times on the Apache lists. There really isn't much decent documentation out there on how to write Apache modules. The Apache1 code is rather simple, so most people just read the server code to figure it out. The closest thing to real documentation is an old book called "Writing Apache Modules with Perl and C" by Lincoln Stein and Doug MacEachern. You'll want to read chapter 3 - "The Apache Module Architecture and API" where this particular topic is covered. -Rasmus

Michael B Allen

19 years ago
On Fri, 20 Apr 2007 01:57:45 -0700 Rasmus Lerdorf <rasmus@lerdorf.com> wrote:
> Michael B Allen wrote: > > On Fri, 20 Apr 2007 09:20:26 +0200 (CEST) > > Derick Rethans <derick@php.net> wrote: > > > >> On Thu, 19 Apr 2007, Michael B Allen wrote: > >> > >>> Is there an Apache or PHP setting that would cause an extension to be > >>> deinitilized in the initial root process on startup? > >> It's an Apache thing. First it brings up all modules (like mod_php) to > >> figure out which settings it supports. Then it shuts down everything. > >> Then it starts the real start up process and initializes all modules > >> again. > > > > Hi Derick, > > > > Is this behavior documented anywhere? I suppose I should just get on > > the Apache list and ask there ... > > This question has probably been asked a hundred times on the Apache > lists. There really isn't much decent documentation out there on how to > write Apache modules. The Apache1 code is rather simple, so most people > just read the server code to figure it out. The closest thing to real > documentation is an old book called "Writing Apache Modules with Perl > and C" by Lincoln Stein and Doug MacEachern. You'll want to read > chapter 3 - "The Apache Module Architecture and API" where this > particular topic is covered.
Well it doesn't sound like this is something they just started doing. My PHP extension has been tested on numerous platforms and I have only ever seen the PHP module initialization / deinitialization routines called once on startup / shutdown. Even if the actual PHP module is loaded and unloaded, do you call the (de)initialization routines for each (unl)load? I'm not sure this issue is the issue I'm seeing. Mike
-- Michael B Allen PHP Active Directory Kerberos SSO http://www.ioplex.com/

Michael B Allen

19 years ago
One word: SELinux On Thu, 19 Apr 2007 23:46:08 -0400 Michael B Allen <mba2000@ioplex.com> wrote:
> We have an extension that forks a process from the initial Apache root > process and does privileged work. The regular Apache workers running as > 'apache' communicate with this root process using a pipe and shared > memory. We need that root process running. > > Anyway, I have a customer who is seeing the extension initialize, > everything starts up great, and then the extension deinitialization > routine is called.
-- Michael B Allen PHP Active Directory Kerberos SSO http://www.ioplex.com/