连接重置由对等:mod_fcgid:从FastCGI的服务器错误读取数据(Connection re

2019-06-17 21:41发布

我对PHP有问题,即我的应用程序正在试图运行PHP的备份文件,突然变得HTTP错误代码500。 我检查了日志,这是什么话。

[星期二8月28日14时17分28秒2012] [警告] [客户端XXXX](104)通过对等连接复位:mod_fcgid:从FastCGI的服务器错误读取数据,引用者: http://example.com/backup/backup.php
[星期二08月28十四时17分28秒2012] [错误] [客户端XXXX]脚本头过早结束:backup.php,引用者: http://example.com/backup/backup.php

任何人都知道如何解决这个问题? 我真的卡在这里,无法找到在互联网解决方案。

希望任何人都可以分享他们的知识。

谢谢。 詹姆士

Answer 1:

我设法通过增加FcgidBusyTimeout解决了这个。 为了以防万一,如果有人跟我有类似的问题。

这是我对我的apache.conf设置:

<VirtualHost *:80>
.......
<IfModule mod_fcgid.c>
FcgidBusyTimeout 3600
</IfModule>
</VirtualHost>


Answer 2:

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

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

检查包装脚本和Apache2的设置后,我意识到,在/ var / WWW /没有一致的权限。 因此,FCGId包装脚本不能被读取。

ls -la /var/www
drwxrws---  5 www-data     www-data     4096 Oct  7 11:17 .

对于我的方案chmod -o+rx /var/www是必修课,因为使用的SuExec用户不是成员www-data的用户群-他们不应该是当然的安全原因成员。



Answer 3:

如果你想安装一个PHP版本<5.3.0,则必须更换

--enable-cgi

有:

--enable-fastcgi

在你./configure声明,从php.net doc的摘录:

--enable-fastcgi

如果启用,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

注意THE(CGI-FCGI)



Answer 4:

著名的Moodle“replace.php”脚本可以生成这种情况了。 对我来说,它正在采取年龄运行,然后失败,在浏览器中的500消息,也与我的Apache错误日志文件上面的错误消息。

我跟进@詹姆斯明智的回答: FcgidBusy是在可读描述Apache文档 。 我想这一点:增加了一倍的时间,这阿帕奇会给我的脚本来运行量,通过插入/etc/apache2/mods-available/fcgid.conf以下行

FcgidBusyTimeout 600

然后我重新启动Apache和试图再次运行我replace.php脚本。

好在这一次的脚本实例运行完成,所以我的目的,这充当了解决方案。



Answer 5:

我有这个问题,并意识到该文件的cgi-bin / PHP-FCGI没有执行权。

它有644模式,同时应该有755模式。

设置正确的模式是不可能的(可能是因为该文件被打开或某事),所以我复制,从那里有适当的权限已经设置另一个域目录和固定的一切文件。



Answer 6:

我碰到这个人来在调试的Virtualmin /阿帕奇相关的错误。

就我而言,我运行的Virtualmin和在我的虚拟机的php.ini中的safe_mode =开。

在我的虚拟机的错误日志,我正被对方重置FCGI连接:从FastCGI的服务器读取数据时出错:mod_fcgid

在我的主要的Apache错误日志中我得到:PHP致命错误:指令“safe_mode”启用不再提供PHP在未知在线0

就我而言,我只是在我的php.ini设置的safe_mode =关闭并重新启动Apache的。

stackoverflow.com/questions/18683177/where-to-start-with-deprecated-directive-safe-mode-on-line-0-in-apache-error



Answer 7:

不要在这个问题提问者的情况下 ,但往往:

什么是“脚本头过早结束”错误是什么意思?

这错误意味着FCGI呼叫意外退出。

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

如何解决这一问题?

如果脚本的崩溃是起因,修复脚本,以便它不会崩溃。 那么这个错误被修正了。 查明为什么一个脚本崩溃,你需要调试。 例如,您可以查看PHP错误日志。 记录到STDERR错误通常进入FCGI的错误处理程序。



Answer 8:

我有同样的问题,长时间运行的脚本与错误信息中的error_log“脚本头过早结束:的index.php”和“从FastCGI的服务器错误读取数据连接被对方​​复位:mod_fcgid”。 经过测试的时间这有助于我(的CentOS 6,PHP-FPM 7之外,Plesk 30年5月12日):

编辑配置文件:

/etc/httpd/conf.d/fcgid.conf

设置较高的运行时间。 在我的情况600秒

创建新条目:

FcgidBusyTimeout 600

适应以下项目:

FcgidIOTimeout 600

FcgidConnectTimeout 600

重新启动httpd的:

服务的httpd重新启动



Answer 9:

在CentOS的发行suexec的编译仅在/ var / WWW运行。 如果您尝试设置DocumentRoot的其他地方,你必须重新编译 - 在Apache日志错误是:(104)连接被对方​​复位:mod_fcgid:从脚本头FastCGI的服务器过早结束读取数据时出错:php5.fcgi



Answer 10:

只要安装在PHP5的debian-CGI

sudo apt-get install php5-cgi

于CentOS

sudo yum install php5-cgi


Answer 11:

我增加最大执行时间为600秒完成任务!



Answer 12:

我有同样的问题,不同的和简单的解决方案。

问题

我接受的答案,下面安装了PHP 5.6 on向Ubuntu的这个问题 。 使用的Virtualmin从PHP 5.5切换特定的虚拟服务器,以PHP 5.6后,我收到了500内部服务器错误,不得不在Apache的错误日志中相同的条目:

[Tue Jul 03 16:15:22.131051 2018] [fcgid:warn] [pid 24262] (104)Connection reset by peer: [client 10.20.30.40:23700] mod_fcgid: error reading data from FastCGI server
[Tue Jul 03 16:15:22.131101 2018] [core:error] [pid 24262] [client 10.20.30.40:23700] End of script output before headers: index.php

原因

很简单: 我没有安装php5.6-cgi

固定

安装包和重装Apache的解决了这个问题:

  • sudo apt-get install php5.6-cgi如果你使用PHP 5.6

  • sudo apt-get install php5-cgi ,如果您使用的是不同的PHP 5版本

  • sudo apt-get install php7.0-cgi如果你正在使用PHP 7

然后使用service apache2 reload应用配置。



Answer 13:

检查/ var / lib中/ PHP /会话和它的权限。 这个目录应该是由用户可写的这样的会议可以存储



Answer 14:

前面已经提到,这可能是发生由于FCGI处理程序权限问题。 如果你正在使用的suexec - 不要忘记检查,如果Apache在此模块启用。



Answer 15:

如果你像我一样在共享服务器上的主持人说这是打内存限制的结果,所以他们杀了脚本,导致此错误看到“脚本头过早结束”。 他们提到我这个:

https://help.dreamhost.com/hc/en-us/articles/216540488-Why-did-procwatch-kill-processes-on-my-Shared-serv

鉴于内存的增加,这些问题去了。 我想备份的WordPress插件上升气流也许比在其职责/设置热心。



Answer 16:

在我来说,我使用的是自定义扩展为我的PHP文件,我不得不编辑/etc/apache2/conf-available/php7.2-fpm.conf并添加以下代码:

    <FilesMatch ".+\.YOUR_CUSTOM_EXTENSION$">
        SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </FilesMatch>


Answer 17:

我得到了同样的问题(使用Plesk 12安装)。 然而,当我从执行PHP作为切换到FastCGI的Apache模块的网站工作。

经过我的suexec的日志:

$ cd /var/log/apache2/
$ less suexec.log

当你发现是这样的:

[2015-03-22 10:49:00]: directory is writable by others: (/var/www/cgi-bin/cgi_wrapper)
[2015-03-22 10:49:05]: uid: (10004/gb) gid: (1005/1005) cmd: cgi_wrapper

试试这个命令

$ chown root:root /var/www/cgi-bin/cgi_wrapper
$ chmod 755 /var/www/cgi-bin/cgi_wrapper
$ shutdown -r now

作为根。

我希望它可以帮助你。



文章来源: Connection reset by peer: mod_fcgid: error reading data from FastCGI server