Perl Fastcgi - HTTP ::消息内容必须是字节数

时间:2016-02-19 09:18:52

标签: perl unicode

我收到以下错误:

  

[Fri Feb 19 08:55:41 2016] [错误] [client 172.16.30.100] FastCGI:   服务器“/home/admin/soap/server.fcgi”stderr:HTTP ::消息内容   必须是字节数   /usr/local/lib/perl5/site_perl/5.8.9/SOAP/Transport/HTTP.pm第317行

     

[Fri Feb 19 08:55:41 2016] [错误] [client 172.16.30.100] FastCGI:   从服务器收到的不完整标头(0字节)   “/home/admin/soap/server.fcgi”[Fri Feb 19 08:55:41 2016] [warn]   FastCGI:服务器“/home/admin/soap/server.fcgi”(pid 45466)终止   通过调用状态为'255'的退出

以下是HTTP.pm的第317行。感谢您对修复的任何输入。

$self->response(HTTP::Response->new(
$code => undef,
HTTP::Headers->new(
    'SOAPServer' => $self->product_tokens,
     $compressed ? (
         'Content-Encoding' => $COMPRESS) : (),
         'Content-Type' => join(
             '; ',
             'text/xml', 
             !$SOAP::Constants::DO_NOT_USE_CHARSET && $encoding ? 'charset=' . lc($encoding) : ()
         ),
         'Content-Length' => SOAP::Utils::bytelength $response),
     $response,
));
$self->response->headers->header('Content-Type' => 'Multipart/Related;       type="text/xml"; start="<main_envelope>"; boundary="'.$is_multipart.'"') if   $is_multipart; }

1 个答案:

答案 0 :(得分:0)

错误消息几乎告诉你所有关于它的信息:你提供HTTP::Response变量的$response对象的内容必须是字节 - 即没有0-255范围之外的任何字符的缓冲区。使用Encode::encode将其从Perl内部表示转换为协议所需的任何编码。

顺便说一句,这与fastcgi无关。第一个错误导致脚本死亡而不发出响应,从而导致第二条错误消息。