0

I am new to ubuntu and would appreciate help overcoming a block setting up LAMP with software versions in this post's title (current I believe as of 11/2016). The problem seems to be an inability to configure Apache 2 with php7 mods.

I am using default packages installed using "tasksel install lamp-server", but the downloaded Apache2 package did not seem to install as configured for php7 mods. For example, the files "php7.0conf" and "php7.0load" were not copied into the folder "etc/apache2/mods-enabled". Using "libapache2-mod-php7.0" also does not seem to enable php7.0 mods. The only instruction I have found to enable php7.0 mods is "a2enmodphp7.0," which does copy the php7 "conf" and "load" files into Apache2's "mods-enabled" folder, but then Apache2 fails to restart with the following error:

"Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. AH00013: Pre-configuration failed
httpd.service: control process exited, code=exited status=1
"

I get the same result downloading Apache2 individually (using "apt-get install apache2") followed by "apt-get libapache2-mod-php7.0" and "a2enmodphp7.0".

My research shows this to be a known incompatibility between Apache2 and php7. A wiki on Apache says that Apache runs a threaded MPM while PHP7 is not compiled to be threadsafe. It suggests a workaround using manual changes to Apache configuration files. See Section 4.3 of https://wiki.archlinux.org/index.php/LAMP#PHP.

Before I start tinkering under the hood, I would like to ask the community whether there is a more preferred solution? My trust in the people who put together the default packages leads me to hope they built in something that stitches them together.

1 Answer 1

0

There are multiple ways to connect PHP to Apache. Those are called server APIs or SAPIs. To use the Apache module mod_php is one such SAPI. But some PHP modules (for example the MySQL module) can't handle working with multiple threads yet, they're not threadsafe. mod_php is a relatively tight coupling between Apache and PHP, so you can't use a threading MPM and not threadsafe PHP modules at the same time.

You've got two options: The first option is to switch to a non-threading MPM, being prefork. That would probably come with a performance penalty.

The second option is, switch to a SAPI that isn't as tightly coupled, like fcgi or PHP-FPM. These basically run as their own daemons, so the Apache MPM doesn't have to care if any modules in, say, the PHP-FPM daemon are thread-safe or not. But to set those up you need to do more than just install a package with apt, so there's a learning curve.

2
  • Thank you. The solution for me was switching to Apache's prefork MPM using the following commands: sudo a2dismod mpm_event followed by sudo a2enmod mpm_prefork. For the record, the following thread also has helpful information about this error and the FPM and CGI SAPIs: askubuntu.com/questions/760787/… Some other threads suggest that running libapache2-mod-php7.0 should accomplish the switch to Apache's prefork MPM module. It didn't work for me, but the manual commands above appear to be successful.
    – stuart_h
    Nov 29, 2016 at 2:31
  • @stuart_h Good to hear you solved your problem. If you think the answer was helpful, you can mark it as accepted :) Nov 29, 2016 at 10:12

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .