如何使用线程安全PHP在Ubuntu 14.04上启用事件MPM Apache 2.4?


25

我升级到Ubuntu Server 14.04,期望默认的apache安装将使用新的事件MPM,但是相反,我找到了旧的占用内存的prefork。

我已经在Arch Linux中成功设置了事件MPM,但是在Ubuntu上却没有成功。我不断得到:

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP

我已经安装了php-fpm,并配置了apache2来使用它,但是由于apache2的配置文件在Ubuntu上是不同的,因此我不确定我是否在正确的地方使用它。

关于如何使PHP线程安全,以便可以使用apache2 event-mpm的任何想法?(当然,无需手动重新编译php)

Answers:


39

要禁用它event MPM,您可以这样做sudo a2dismod mpm_event,然后启用它prefork,您应该这样做sudo a2enmod mpm_prefork

最后重启apache:

sudo service apache2 restart

3
您需要在“答案”列表顶部在这里...不在这里..那里...。
卡玛

2
这应该是公认的答案!完成此操作后,请不要忘记重新启动apache:sudo service apache2 restart
Reeno

4
像OP一样,这如何回答如何启用MPM的问题?您正在解释如何执行与OP要求相反的操作。
Craig

2
@ Mehraban,OP询问单词“如何启用事件MPM?”,而您的回答是“仅禁用事件MPM”。这个答案如何?
Nicolas Bouliane

1
@Mehraban但这不是被问的问题,因此所有来自Google的访问量都被告知“做X的最好方法是不做X”。如果我问如何制作巧克力曲奇饼,我希望有巧克力曲奇饼食谱。
Nicolas Bouliane '17


6

您可以安装多种方式使Apache与PHP并行通信。也许(仍然)安装了旧的mod_php,除了fastcgi / php-fpm。

您可以使用以下命令查看Apache在运行时加载了哪些模块

apache2ctl -M

如果需要,用于sudo获取root特权。如果您php5_module (shared)在Apache当前使用的模块中看到,则仍旧安装了mod_php并阻止您使用mpm_workermpm_event


5
如果服务器未启动,sudo a2dismod则无法运行该命令获取mod,请尝试然后按两次制表符以查看是否可以禁用mod的列表。如果您认为php5可行。
pferrel

2

对我来说,以下是Debian的全部工作:

  1. 禁用前叉,启用事件: a2dismod mpm_prefork && a2enmod mpm_event
  2. 删除mod-php5: aptitude remove libapache2-mod-php5
  3. 请注意,您php_的VHost中的每个Option都由封装<IfModule mod_php5.c></IfModule>,否则apache不会重启
  4. service apache2 restart

1

在apache配置文件的“加载模块”部分中查找以下内容:

LoadModule mpm_event_module modules/mod_mpm_event.so

并将其替换为以下模块:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

不,不要这样做!Apache是​​模块化构建的,因此您无需将任何LoadModule-Lines更改为您的配置。只做a2dismod mpm_prefork && a2enmod mpm_event。然后重新启动apache,就完成了。
Suther

0

php5模块需要prefork mpm,并且要禁用prefork,必须禁用php5。

在debian下,我以root身份执行以下操作:

禁用前叉MPM

a2dismod mpm_prefork

启用事件mpm或您可能需要的任何mpm。注意我发现不建议将事件mpm用于apache 2.2或更早版本

a2enmod mpm_event

禁用php5模块加载,但不卸载。

a2dismod php5

测试生成的apache配置的整体正确性。错误需要按照上面@sulther答案处理

apache2ctl -t

重新启动Apache

systemctl restart apache2

如果仍然需要php,则应安装线程安全版本。参见:https : //www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-freebsd-12-0

祝好运

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.