DevHeads.net

Peculiar mod_php result

I am running Apache 2.4.25 using php-fpm 5.6.30. I do NOT use mod_php.

Last week I compiled a newer version of PHP, 7.2.9, and I included the
--with-apxs parameter in the build, which causes mod_php to be generated.

The "make install" function updated the Apache httpd.conf file to show
LoadModule php7 module ...etc. I think (don't know for sure) that the old php5
module may not have been commented out at the time, although it was not in use.

Early this morning, when logrotate did a restart on Apache all of the child
processes immediately halted, even though they should not have been affected by
the new php7 module being loaded because they contact php-fpm via ports in the
9000-9099 group. When I was called in to figure out what happened, Apache and
all its children were running in the process list (ps -ef) but inactive. I
stopped it (systemctl stop httpd) and restarted (systemctl start httpd) and
immediately all child processes segfaulted. This is the httpd error log:

[Sun Sep 09 03:18:02.789845 2018] [mpm_event:notice] [pid 11190:tid
139629420282816] AH00489: Apache/2.4.25 (Unix) OpenSSL/1.0.2k configured --
resuming normal operations
[Sun Sep 09 03:18:02.789874 2018] [core:notice] [pid 11190:tid 139629420282816]
AH00094: Command line: '/usr/apache-2.4.25/bin/httpd'
[Sun Sep 09 03:29:44.524219 2018] [core:notice] [pid 11190:tid 139629420282816]
AH00052: child pid 25939 exit signal Segmentation fault (11)
[Sun Sep 09 03:29:44.524285 2018] [core:notice] [pid 11190:tid 139629420282816]
AH00052: child pid 25941 exit signal Segmentation fault (11)
.... plus one segfault line for each child...

My question: when the php7 module was not used, and there is no addHandler
statement for mod_php, why did the child processes load it? More importantly,
when mod_proxy_fcgi is handling all xxx.php format URL's, why would the child
processes even be involved?

Thanks in advance.

John

Comments

Re: Peculiar mod_php result

By Eric Covener at 09/09/2018 - 13:44

If there's a LoadModule, the module will be loaded. It can execute at
other phases of processing than the handler and possibly crash.