通过对等方重置连接:mod_fcgid:从FastCGI服务器读取数据时出错

Jam*_*ise 49 php apache mod-fcgid

我在PHP上遇到问题我的应用程序试图运行php备份文件并突然获得HTTP Error 500 Code.我检查了日志,这就是它的意思.

[2012年8月28日14:17:28] [警告] [客户端xxxx](104)通过对等方重置连接:mod_fcgid:从FastCGI服务器读取数据时出错,参考资料:http://example.com/backup/backup.php
[Tue Aug 28 14:17:28 2012] [error] [client xxxx]脚本标题的提前结束:backup.php,referer:http://example.com/backup/backup.php

谁知道如何解决这个问题?我真的被困在这里,无法在互联网上找到解决方案.

希望有人可以分享他们的知识.

谢谢.詹姆士

Jam*_*ise 28

我设法通过添加FcgidBusyTimeout来解决这个问题.以防万一有人和我有类似的问题.

这是我在apache.conf上的设置:

<VirtualHost *:80>
.......
<IfModule mod_fcgid.c>
FcgidBusyTimeout 3600
</IfModule>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在使用Plesk 12.5,则可以在Plesk>您的域> Apache&nginx设置> HTTP(S)的附加指令下添加该片段(没有第一行和最后一行,VirtualHost部分). (5认同)

Oli*_*der 12

我在Apache2日志文件中有非常类似的错误:

(104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
Premature end of script headers: phpinfo.php
Run Code Online (Sandbox Code Playgroud)

检查包装器脚本和Apache2设置后,我意识到/ var/www /没有一致的权限.因此根本无法读取FCGId Wrapper脚本.

ls -la /var/www
drwxrws---  5 www-data     www-data     4096 Oct  7 11:17 .
Run Code Online (Sandbox Code Playgroud)

chmod -o+rx /var/www当然,我的场景是必需的,因为使用过的SuExec用户不是www-data用户组的成员- 当然,出于安全原因,他们不应该是成员.

  • 我检查了许可以及`FcgidBusyTimeout 3600`但是再次检查500 (2认同)

小智 5

如果要安装 PHP 版本 < 5.3.0,则必须替换

--enable-cgi
Run Code Online (Sandbox Code Playgroud)

和:

--enable-fastcgi
Run Code Online (Sandbox Code Playgroud)

在您的./configure声明中,摘自 php.net 文档:

--enable-fastcgi
Run Code Online (Sandbox Code Playgroud)

如果启用此功能,CGI 模块也将在支持 FastCGI 的情况下构建。自 PHP 4.3.0 起可用

从 PHP 5.3.0 开始,此参数不再存在,而是由 --enable-cgi 启用。编译后./php-cgi -v应该是这样的:

PHP 5.2.17 (cgi-fcgi) (built: Jul  9 2013 18:28:12)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
Run Code Online (Sandbox Code Playgroud)

注意 (cgi-fcgi)


hak*_*kre 2

不是在提问者的情况下,而是经常:

“脚本头提前结束”错误是什么意思?

该错误意味着 FCGI 调用意外退出。

在某些情况下,这意味着脚本“backup.php”确实崩溃了。

如何解决这个问题?

如果脚本崩溃是原因,请修复该脚本以使其不会崩溃。那么这个错误也被修复了。要查明脚本是否崩溃以及为何崩溃,您需要对其进行调试。例如,您可以检查 PHP 错误日志。记录到 STDERR 的错误通常会进入 FCGI 的错误处理程序。