gpt4 book ai didi

IIS 提供的 Perl CGI 脚本无法启动并出现 HTTP-502 错误,但如果再次尝试则可以正常工作

转载 作者:行者123 更新时间:2023-12-04 19:46:16 29 4
gpt4 key购买 nike

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

IIS7 网络服务器提供的 Perl CGI 脚本有时会因 HTTP-502 错误而失败:“HTTP 错误 502.2 – 错误的网关 CGI 应用程序未返回完整的 HTTP header 集”

如果此脚本长时间未被调用(通常为数小时),通常会发生此错误。如果用户重试启动此脚本的操作,它将起作用。我认为 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)以实现正确的环境和当前工作目录?

最佳答案

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

首先点击 -> Handler Mappings

然后点击右边的action box -> Add module Mapping

请求路径 -> *.pl

模块 -> IsapiModule

可执行文件 -> Activeperl\bin\PerlEx30.dll

名称 -> perl(任意)

请求限制 -> 映射 -> 文件或文件夹,动词 -> 所有动词,
访问 -> 执行
然后点击确定

然后您将在添加模块映射中显示名称 perl

然后是左边的角

右键单击“站点”,然后单击“添加网站”

站点名称 -> perl.com(任意)

物理路径 -> 选择包含 perl cgi 脚本的文件夹

主机名 -> perl.com 然后点击确定

那么以下对于运行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

关于IIS 提供的 Perl CGI 脚本无法启动并出现 HTTP-502 错误,但如果再次尝试则可以正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28615661/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com