问题描述
我升级到 Ubuntu Server 14.04,期望默认的 apache 安装会使用新的事件 MPM,但我找到了旧的 memory-eating 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)
最佳答案
要禁用 event MPM
,您可以执行 sudo a2dismod mpm_event
,然后启用 prefork
,您应该执行 sudo a2enmod mpm_prefork
。
最后重启apache:
sudo service apache2 restart
次佳答案
这对我有用。
首先检查你是否安装了这个包:
dpkg -l | grep libapache2-mod-php5
如果你有它,只需将其删除:
apt-get remove libapache2-mod-php5
第三种答案
您可以安装多种方式让 Apache 与 PHP 并行通信。也许你(仍然)安装了旧的 mod_php,除了 fastcgi/php-fpm。
你可以看到你的 Apache 在运行时加载了哪些模块
apache2ctl -M
如果需要,请使用 sudo
获取 root 权限。如果您在 Apache 当前使用的模块中看到 php5_module (shared)
,则旧的 mod_php 仍然安装并阻止您使用 mpm_worker
或 mpm_event
。