我想尝试使用 mod_php 在线程 MPM 中运行 Apache。有人有线程安全的 PHP 模块列表吗,这样我就能知道这样做是否安全?
答案1
PHP 常见问题解答明确指出这是个坏主意。它所依赖的大多数库确实不是线程安全的。
如果您希望使用 Apache worker(我个人确实希望如此),您可能想研究使用 FastCGI(mod_fcgid)运行 worker-mpm 和 PHP5。
“cgi”部分可能会让您望而却步,但请放心,mod_fcgid 可带来出色的性能,它使用进程池,其中 PHP 拥有自己的内存空间,完全独立于 Web 服务器。这具有多种优势,包括但不限于更好的安全性(您可以以其他用户身份运行池)、更好的稳定性(如果 PHP 崩溃,它不会连累您的 Web 服务器)以及显著减少 apache 进程的内存,因为它们根本不需要嵌入 mod_php,它们只需与池通信。因此,它还允许一些前所未有的粒度。
以下是基于 Debian 的系统的示例教程。我在各种系统的生产中使用它,它为我提供了更高的可扩展性。