fastcgi-script的处理程序返回了无效的结果代码

时间:2015-02-26 19:23:06

标签: php character-encoding soap-client

我有一个奇怪的问题,PHP应用程序连接到SOAP 1.2 + WSDL服务:

上一条信息:带有php5-fcgi模块的Apache服务器2.4。 我正在为SOAP服务的客户端工作,我可以为服务做一些请求。

请求需要一些时间才能完成。我需要做一个set_time_limit(60)因为如果我没有它,脚本会返回空闲超时错误:

  

FastCGI:comm与服务器“/ usr / lib / cgi-bin / php5-fcgi”中止:空闲   超时(30秒)

使用set_time_limit,我得到另一个不同的错误:

  

AH00524:fastcgi-script处理程序返回无效结果代码1

尝试执行SOAP请求时会出现这些错误。没有它,页面工作正常。

在日志中出现此错误,我在导航器上有另一个不同的错误。在IE上,页面未加载,Firefox显示“内容编码错误”页面。

如果我尝试在屏幕上显示SOAP连接结果(使用var_dump),并且,如果我尝试执行请求但不将其发送到屏幕,则会出现这些错误。

尝试搜索“内容编码错误”,我发现了一些有关压缩的内容。我试过在set_time_limit之前和之后做“ob_start”,但是,当我尝试这样做时,我在日志中得到一个超时错误(我认为PHP不会使超时发生变化),而且,页面显示500内部服务器错误。

有什么问题?我认为可以解决这些问题的唯一选择是Apache和php5-fcgi模块之间的超时,但我不知道如何修改它以尝试其他选项。


编辑:

我在同一台机器上有两台服务器,Apache2(2.4.10)+ php5-fcgi(5.6.2)(HTTP端口80,HTTPS端口443)和Nginx(1.6.2)+ php5-fcgi(HTTP)港口8080)。

使用Apache2测试的同一页面在HTTP和HTTPS上不起作用(顶部描述错误)。然后,我尝试使用Nginx(相同的webroot,理论上相同的php5-fcgi配置)进入,然后运行正常。

谢谢,

1 个答案:

答案 0 :(得分:3)

使用fastCGI时,大多数时候空闲超时错误是由CGI请求长于使用idle-timeout参数设置的时间引起的。如果未设置,则默认值为30秒。

来自mod_fastcgi documentation

  

-idle-timeout n(30秒)       在请求中止并记录事件之前允许的FastCGI应用程序不活动的秒数(出错时)   LogLevel的)。不活动计时器仅适用于连接   正在等待FastCGI应用程序。如果请求排队到   申请,但申请没有回应(通过写作和   在这段时间内,请求将被中止。如果   沟通与申请完成但不完整   客户端(响应被缓冲),超时不适用。

在日志文件中,您可以看到如下内容:

[fastcgi:error] FastCGI: comm with server "/var/www/bin/php-fastcgi" aborted: idle timeout (30 sec), referer: http://example.org/script.php

在网络浏览器中,你可以得到内容编码错误"消息。

为避免此错误,可以在fastCGI配置中增加空闲超时。

FastCgiConfig -idle-timeout 900

因此,通过增加空闲超时,您不再需要使用set_time_limit。