由peer重置的连接:mod_fcgid:从FastCGI服务器读取数据时出错
我在PHP的问题,我的应用程序试图运行一个PHP备份文件,突然得到HTTP错误500代码。 我已经检查了日志,这是什么意思。
[2012年8月28日14:17:28] [警告] [客户端xxxx](104)通过peer重置连接:mod_fcgid:从FastCGI服务器读取数据时出错,引用者: http : //example.com/backup/backup.php
[2012年8月28日14:17:28] [错误] [客户端xxxx]脚本标题过早结束:backup.php,referer: http : //example.com/backup/backup.php
有谁知道如何解决这个问题? 我真的被困在这里,无法在互联网上find解决scheme。
希望任何人都能分享他们的知识
谢谢。 詹姆士
我设法通过添加FcgidBusyTimeout来解决这个问题。 以防万一有人有类似的问题。
这是我在我的apache.conf的设置:
<VirtualHost *:80> ....... <IfModule mod_fcgid.c> FcgidBusyTimeout 3600 </IfModule> </VirtualHost>
我在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 Wrapper脚本根本无法读取。
ls -la /var/www drwxrws--- 5 www-data www-data 4096 Oct 7 11:17 .
对于我的情况,当然需要chmod -o+rx /var/www
,因为所使用的SuExec用户不是www-data
用户组的成员 – 当然,他们不应该是安全的成员。
如果你想安装一个PHP版本<5.3.0,你必须replace
--enable-cgi
有:
--enable-fastcgi
在您的./configure
语句中,摘自php.net文档:
--enable-fastcgi
如果启用了这个function,那么CGI模块也将被构build为支持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
注意(cgi-fcgi)
着名的Moodle“replace.php”脚本也会产生这种情况。 对我来说,运行很长时间,然后在浏览器中发出500条消息,并在我的apache错误日志文件中出现上述错误消息。
我跟着@詹姆斯明智的答案: FcgidBusy
是可读的在Apache文档中描述。 我试了一下:把Apache的脚本运行时间增加了一倍,在/etc/apache2/mods-available/fcgid.conf中插入下面一行
FcgidBusyTimeout 600
然后我重新启动Apache,并试图再次运行我的replace.php脚本。
幸运的是,这次脚本实例运行完成,所以对我来说这是一个解决scheme。
我有这个问题,并意识到文件cgi-bin / php-fcgi没有执行权限。
它有644模式,而应该有755模式。
设置正确的模式是不可能的(可能是因为文件被打开或者某事),所以我从另一个已经设置了适当权限的域目录复制了该文件,并修复了所有的问题。
我在debugging一个virtualmin / apache相关的错误时遇到了这个。
在我的情况下,我正在运行virtualmin,并在我的虚拟机的php.ini safe_mode = On。
在我的虚拟机的错误日志中,我得到了由同级重置的fcgi连接:mod_fcgid:从FastCGI服务器读取数据时出错
在我的主要apache错误日志中,我得到:PHP致命错误:指令“safe_mode”不再可用PHP中未知的行0
在我的情况下,我只需在我的php.ini中设置safe_mode = Off并重新启动apache。
stackoverflow.com/questions/18683177/where-to-start-with-deprecated-directive-safe-mode-on-line-0-in-apache-error
不是在这个问题askers案件,但经常:
“脚本头文件过早结束”错误是什么意思?
那个错误意味着FCGI呼叫意外退出。
在某些情况下,这意味着脚本“backup.php”确实崩溃了。
如何解决这个问题?
如果脚本崩溃是原因,请修复脚本,使其不会崩溃。 那么这个错误也是固定的。 要找出脚本是否崩溃和为什么崩溃,您需要debugging它。 例如,你可以检查PHP错误日志。 logging到STDERR的错误通常进入FCGI的error handling程序。
对于长时间运行的脚本,error_log中的错误消息“脚本头提前结束:index.php”和“通过peer重置连接:mod_fcgid:从FastCGI服务器读取数据时出错”也遇到了同样的问题。 经过数小时的testing,这对我有帮助(CentOS 6,PHP-FPM 7,Plesk 12.5.30):
编辑configuration文件:
/etc/httpd/conf.d/fcgid.conf
设定较高的运行时间。 在我的情况600秒
创build新条目:
FcgidBusyTimeout 600
修改以下条目:
FcgidIOTimeout 600
FcgidConnectTimeout 600
重启httpd:
服务httpd重启
在CentOS发行版中,suexec被编译为仅在/ var / www中运行。 如果您尝试在其他地方设置DocumentRoot,则必须重新编译它 – apache日志中的错误是:(104)通过peer重置连接:mod_fcgid:从FastCGI服务器读取数据时出错提前结束脚本头文件:php5.fcgi
只要在Debian中安装php5-cgi即可
sudo apt-get install php5-cgi
在Centos
sudo yum安装php5-cgi
检查/ var / lib / php / session及其权限。 这个目录应该是用户可写的,所以会话可以被存储
如前所述,这可能是由于fcgi处理程序权限问题而发生的。 如果你使用的是suexec,不要忘了检查apache是否启用了这个模块。
我遇到了同样的问题(安装了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
作为根。
我希望它可以帮助你。