mod_fcgid:从 FastCGI 服务器读取数据时出错

mod_fcgid:从 FastCGI 服务器读取数据时出错

这是我在这里的第一篇帖子,尽管我经常在这里搜索并寻找答案。这次我花了几天时间搜索各种网站,但不幸的是,其他帖子中的答案对我的情况没有帮助。

我管理着几台 LAMP 服务器,每台服务器托管大约 10 到 15 个虚拟主机。每台服务器都有一个控制面板,供管理员和客户管理网站。过去几年,它在带有 mod_php 的 Centos 6 上运行良好。

我现在正在升级控制面板以在 Centos 7 上运行,并将 PHP 安装为 mod_fcgid。

每个虚拟主机都有自己的 apache conf 文件,如下所示:

<VirtualHost 136.243.195.117:80>
   DocumentRoot "/home/c7demose/public_html"
   ServerName c7.demoserver.co.za
   ServerAlias www.c7.demoserver.co.za mail.c7.demoserver.co.za ftp.c7.demoserver.co.za
  <IfModule mod_fcgid.c>
        SuexecUserGroup c7demose c7demose
    <Directory /home/c7demose/public_html>
      Options +ExecCGI
      AllowOverride All
      AddHandler fcgid-script .php
      FCGIWrapper /var/www/php-fcgi-scripts/c7.demoserver.co.za/php-fcgi-starter .php
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

</VirtualHost>

这没有问题,每个站点都按预期运行。过去的工作方式是控制面板监听不同的端口,其 vhost 配置文件监听任何 IP 地址,并且没有 ServerName 变量,因此无论用户使用哪个域名,只要他们使用正确的端口,它就会重定向到控制面板。

换句话说,具有域 user_one.com 的用户可以访问 user_one.com:10025,而用户二可以​​访问他自己的 user_two.com:10025,并且两者都可以进入控制面板:

<VirtualHost *:10025>
        DocumentRoot "/var/www/html/webcp"
  <IfModule mod_fcgid.c>
        SuexecUserGroup apache apache
    <Directory /var/www/html/webcp>
      Options +ExecCGI
      AllowOverride All
      AddHandler fcgid-script .php
      FCGIWrapper /var/www/php-fcgi-scripts/localhost/php-fcgi-starter .php
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

</VirtualHost>

在旧设置中使用 mod_php 时,此方法运行良好。使用 mod_fcgid 时,在这种“全部捕获”情况下尝试访问控制面板时,此方法不起作用。

浏览器显示 500 内部错误,并且 httpd 错误日志显示以下内容:

[Mon Mar 14 00:06:03.684684 2016] [authz_core:debug] [pid 2585] mod_authz_core.c(809): [client 165.255.92.82:40036] AH01626: authorization result of Require all granted: granted 
[Mon Mar 14 00:06:03.684725 2016] [authz_core:debug] [pid 2585] mod_authz_core.c(809): [client 165.255.92.82:40036] AH01626: authorization result of <RequireAny>: granted 
[Mon Mar 14 00:06:03.783142 2016] [authz_core:debug] [pid 2585] mod_authz_core.c(809): [client 165.255.92.82:40036] AH01626: authorization result of Require all granted: granted 
[Mon Mar 14 00:06:03.783178 2016] [authz_core:debug] [pid 2585] mod_authz_core.c(809): [client 165.255.92.82:40036] AH01626: authorization result of <RequireAny>: granted 
[Mon Mar 14 00:06:03.785111 2016] [fcgid:info] [pid 2581] mod_fcgid: server c7.demoserver.co.za:/var/www/php-fcgi-scripts/localhost/php-fcgi-starter(11458) started
[Mon Mar 14 00:06:03.790277 2016] [fcgid:warn] [pid 2585] (104)Connection reset by peer: [client 165.255.92.82:40036] mod_fcgid: error reading data from FastCGI server
[Mon Mar 14 00:06:03.790305 2016] [core:error] [pid 2585] [client 165.255.92.82:40036] End of script output before headers: index.php
[Mon Mar 14 00:06:09.790430 2016] [fcgid:info] [pid 2581] mod_fcgid: process /var/www/php-fcgi-scripts/localhost/php-fcgi-starter(11458) exit(communication error), terminated by calling exit(), return code: 107 

理想情况下,我希望所有这些都与 fast_cgi 一起工作,但如果有一种方法可以使虚拟主机继续使用 fcgi 运行,并且只让端口 10025 上的控制面板使用 mod_php 运行,那么这将是一个可接受的临时解决方案,我只是不知道如何实现,甚至不知道是否可能。

提前致谢!

约翰

相关内容