IIS提供的Perl CGI脚本无法启动,出现HTTP-502错误,但如果重试,则可以正常工作
我一直在寻找解决这个问题的方法: IIS7 web服务器提供的Perl CGI脚本有时会因HTTP-502错误而失败:“HTTP错误502.2–坏网关CGI应用程序未返回完整的HTTP头集” 如果长时间(通常是几个小时)没有调用此脚本,通常会发生此错误。如果用户重试启动此脚本的操作,它将工作。 我认为IIS返回HTTP-502.2错误,因为Perl解释器已将错误消息打印到STDERR。我的猜测是,当前工作目录有时设置不正确(不是与请求的虚拟路径对应的物理路径),因此Perl解释器无法找到脚本 在IIS上,发送给STDERR的消息丢失。使用IIS提供的Perl CGI脚本无法启动,出现HTTP-502错误,但如果重试,则可以正常工作,perl,iis-7,cgi,Perl,Iis 7,Cgi,我一直在寻找解决这个问题的方法: IIS7 web服务器提供的Perl CGI脚本有时会因HTTP-502错误而失败:“HTTP错误502.2–坏网关CGI应用程序未返回完整的HTTP头集” 如果长时间(通常是几个小时)没有调用此脚本,通常会发生此错误。如果用户重试启动此脚本的操作,它将工作。 我认为IIS返回HTTP-502.2错误,因为Perl解释器已将错误消息打印到STDERR。我的猜测是,当前工作目录有时设置不正确(不是与请求的虚拟路径对应的物理路径),因此Perl解释器无法找到脚本 在
CGI::Carp qw(fatalsToBrowser)
也无济于事;它从不打印错误消息,支持我的Perl解释器找不到脚本的理论。
我曾看到在Windows上运行的Apache服务器显示出相同的行为:在长时间暂停后出现一个故障,重试脚本可以完美地工作。
可能在内部使用shell来运行Perl解释器
“perl”文件夹的IIS设置将该文件夹视为应用程序。
处理程序映射将“*.pl”文件映射到
c:\perl\bin\perl.exe“%s”%s
是否需要添加任何设置(Windows或IIS)来强制执行正确的环境和当前工作目录?从IIS运行PERL cgi的另一个技巧
第一次单击->处理程序映射
然后单击右侧操作框->添加模块映射
请求路径->*.pl
Module->IsapiModule
Executable->Activeperl\bin\PerlEx30.dll
Name->perl(任何内容)
请求限制->映射->文件或文件夹,动词->所有动词,
访问->执行
然后单击OK
然后,您将在Add模块映射中显示名称perl
然后是左边的拐角
右键单击网站,然后单击添加网站
site name->perl.com(任何内容)
物理路径->选择包含perl cgi脚本的文件夹
主机名->perl.com
然后单击ok
那么下面的内容对于运行CGI很重要
c:/windows/system32/drivers/etc/hosts
打开主机文件
然后将host name->添加到::1下面的hosts文件中
就像我在iis中的主机名是perl.com一样,我添加了127.0.0.1 perl.com
然后保存它
然后在浏览器上运行perl cgi,如
perl.com/file.pl
您安装了什么perl平台?如stawberry perl或active perlActiveStatePerl 5.8.8亲爱的Hussain,感谢您的回复。我现在可以访问服务器了。我发现问题是由我猜的Perl intepreter写入到STDERR引起的-但这是一个警告:utf8“\xFF”没有映射到Unicode…
当Perl程序在预期UTF-8的情况下从拉丁字符集中读取包含8位字符的配置文件时,出现了警告。有两台机器组成一个带有负载平衡器的集群,并且只有一台机器上的配置文件包含拉丁文-1字符。也许现在已经修好了。@elwood很抱歉这么说,我没有遇到这个问题,所以我不知道。等我有了主意,我会发帖的。