我有一个 ubuntu 14.04.4 服务器,并且安装了 apache2 和 php5 包,但在启用 mpm_worker 并重新启动 apache 后,我收到以下错误“Apache 正在运行线程 MPM,但您的 PHP 模块未编译为线程安全的。您需要重新编译 PHP。AH00013:预配置失败”我在 Google 上搜索了这个问题,但无法修复该问题。有人能给我指点迷津吗?
答案1
Ubuntu 的 PHP5 模块仅适用于单线程 mpm_prefork。为了将 Apache 模块与线程 mpm_worker 一起使用,您需要自己编译线程安全版本的 PHP(这需要禁用 PHP 中所有非线程安全的功能和模块,其中有很多)。
您应该考虑使用 FastCGI/php-fpm,而不是使用libapache2-mod-php5
。这里有安装和配置所需步骤的指南:libapache2-mod-fastcgi
php5-fpm
https://askubuntu.com/a/527227 配置 FPM 的一部分是创建 php 进程“池”,每个进程都有自己的限制和 INI 文件,因此您需要确保 FPM 中的限制对于您网站的预期负载来说是合理的。
这种安排将允许您使用 Apache 中的多线程工作 MPM,同时将 PHP 请求交给每个处理单个请求的各个 PHP 进程。