我有一台安装了 Virtualmin 的 CentOS 服务器。我已使用 Apache mod_fastcgi 按照自己想要的方式配置了 PHP。但是,当我在 Virtualmin 中单击“重新检查配置”时,我得到了
PHP execution via fcgid requires the Apache mod_fcgid module
这个帖子说要改为Default PHP execution mode
,CGI
但我在任何地方都找不到这样的选项!
答案1
mod_fastcgi (www.fastcgi.com) 是一个第三方模块,其指令带有“FastCgi”前缀。
mod_fcgidhttp://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html是一个 Apache 模块,其指令带有“Fcgid”前缀。
我建议您删除 mod_fastcgi 并使用 mod_fcgid。
这对 PHP 来说是个好消息,因为这样您就可以放弃 apache mpm-prefork 并使用更好的 mpm-worker,无需安装 mod_php,而是使用 php 作为快速 cgi。对于 debian,这意味着:
• 删除 apache2-mpm-prefork 和 libapache2-mod-php5。
• 添加 apache2-mpm-worker、libapache2-mod-fcgid 和 php5-cgi。使用 php5-cgi,您不需要自定义快速 cgi 包装器,您可以直接使用下面的 php 命令行本身(注意 /usr/lib/cgi-bin/php5)。
• 对于 PHP 的 mod_fcgid,请注意,作为 FastCGI 的 PHP 有自己的功能,可以在处理完如此多的请求后终止(请参阅 PHP_FCGI_MAX_REQUESTS)。FcgidMaxRequestsPerProcess 有助于避免在处理完其限制后向包装器应用程序发送额外的请求。
• 在每个虚拟主机内或全局范围内:
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 200 FcgidMaxRequestsPerProcess 200
• 然后在目录中:
添加处理程序 fcgid 脚本.php 根目录 /usr/lib/cgi-bin/php5.php 选项 +ExecCGI
答案2
目前,我通过mod_fcgid
在 Apache 中启用但不配置它来解决这个问题。但这浪费内存,我很想知道解决这个问题的“正确”方法!