我升级到了 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)
答案1
要禁用event MPM
,您可以执行以下操作sudo a2dismod mpm_event
,然后要启用prefork
,您应该执行以下操作sudo a2enmod mpm_prefork
。
最后重新启动apache:
sudo service apache2 restart
答案2
这对我有用。
首先检查您是否安装了此包:
dpkg -l | grep libapache2-mod-php5
如果有的话,只需将其删除:
apt-get remove libapache2-mod-php5
答案3
您可以安装多种方式让 Apache 与 PHP 并行通信。除了 fastcgi/php-fpm 之外,也许您(仍然)安装了旧的 mod_php。
你可以使用以下命令查看 Apache 在运行时加载了哪些模块
apache2ctl -M
如果需要,使用sudo
获取 root 权限。如果您php5_module (shared)
在 Apache 当前正在使用的模块中看到,则旧的 mod_php 仍安装并阻止您使用mpm_worker
或mpm_event
。
答案4
在 Apache 配置文件的加载模块部分中查找以下内容:
LoadModule mpm_event_module modules/mod_mpm_event.so
并将其替换为以下模块:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so