IIS提供的Perl CGI脚本无法以HTTP-502错误启动,但如果再次尝试则无效

时间:2015-02-19 19:53:50

标签: perl iis-7 cgi

我一直在寻找解决这个问题的方法:

IIS7 Web服务器提供的Perl CGI脚本有时会因HTTP-502错误而失败:" HTTP错误502.2 - 错误的网关CGI应用程序未返回一组完整的HTTP标头"

如果此脚本未被调用较长时间(通常为几个小时),通常会发生此错误。如果用户重试启动此脚本的操作,它将起作用。 我认为IIS返回HTTP-502.2错误,因为Perl解释器已向STDERR打印了一条错误消息。我的猜测是当前的工作目录有时没有正确设置(不是与请求的虚拟路径对应的物理路径),因此Perl解释器无法找到脚本。

在IIS上,STDERR的消息丢失了。运用 CGI::Carp qw(fatalsToBrowser) 也没有帮助;它从不打印错误信息,支持我的Perl解释器理论没有找到脚本。 我已经看到在Windows上运行的Apache服务器显示相同的行为:经过长时间的停顿后,有一个失败,并且重试脚本可以完美地运行。 可能在内部使用shell来运行Perl解释器。

" perl"的IIS设置文件夹将文件夹视为应用程序。 处理程序映射映射" *。pl"文件到

c:\perl\bin\perl.exe "%s" %s

是否有任何设置(Windows或IIS)我必须添加以强制执行正确的环境和当前工作目录?

1 个答案:

答案 0 :(得分:0)

从IIS运行PERL cgi的另一个技巧。

First click -> Handler Mappings

Then right side action box click -> Add module Mapping

Request Path -> *.pl

Module -> IsapiModule

Executable -> Activeperl\bin\PerlEx30.dll

Name -> perl (anything)

Request Restrictions -> Mapping -> file or folder, verbs -> all verbs , access -> Execute 然后单击“确定”

然后,您将在添加模块映射

中显示名称perl

然后是左侧角落

Right click on the Sites and click Add web Site

site name -> perl.com (anything)

Physical path -> select the folder which is contain the perl cgi scripts

Host name -> perl.com  然后单击确定

然后以下对于运行CGI非常重要

c:/windows/system32/drivers/etc/hosts

打开hosts文件 然后添加host name-> into the hosts file below the ::1 like my Host name in iis is perl.com so i added 127.0.0.1 perl.com 然后保存。

然后在浏览器上运行perl cgi,如perl.com/file.pl