我对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