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

Tow*_*man 26 server php apache2 14.04

我升级到 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
Run Code Online (Sandbox Code Playgroud)

我已经安装php-fpm并配置了 apache2 以使用它,但是由于 apache2 的配置文件在 Ubuntu 上有所不同,我不太确定我是否在正确的地方进行了操作。

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

Meh*_*ban 40

要禁用event MPM,您可以执行sudo a2dismod mpm_event,然后启用prefork,您应该执行sudo a2enmod mpm_prefork

最后重启apache:

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

  • 这如何回答如何启用 MPM 的问题,就像 OP 所问的那样?您正在解释如何做与 OP 要求相反的事情。 (4认同)
  • 你需要在那里......不是在这里......那里......在答案列表的顶部。 (3认同)
  • 这应该是公认的答案!执行此操作后不要忘记重新启动 apache:`sudo service apache2 restart` (2认同)
  • @Mehraban,OP 逐字逐句询问“如何启用事件 MPM?”,您的回答是“仅禁用事件 MPM”。这是一个可以接受的答案吗? (2认同)

小智 14

这对我有用。

首先检查你是否安装了这个包:

dpkg -l | grep libapache2-mod-php5
Run Code Online (Sandbox Code Playgroud)

如果您有它,只需将其删除:

apt-get remove libapache2-mod-php5
Run Code Online (Sandbox Code Playgroud)


Hen*_*eck 6

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

你可以看到你的 Apache 在运行时加载了哪些模块

apache2ctl -M
Run Code Online (Sandbox Code Playgroud)

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

  • 如果服务器未启动,则无法运行它来获取模组,请尝试 ```sudo a2dismod``` 然后点击两次制表符以查看是否可以禁用模组的列表。如果你看到 ```php5``` 禁用它。 (5认同)