代码之家  ›  专栏  ›  技术社区  ›  siukurnin

如何在iis下设置lc_all和lang?

  •  1
  • siukurnin  · 技术社区  · 16 年前

    我正在尝试在iis下运行一些perl cgi脚本。我收到以下信息:

    
    CGI Error
    The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
    
    perl: warning: Setting locale failed.
    perl: warning: Please check that your locale settings:
        LC_ALL = (unset),
        LANG = (unset)
        are supported and installed on your system.
    perl: warning: Falling back to the standard locale ("C").
    
    

    我发现这个问题只有当我“使用”我们的内部库时才会出现,但它确实是一个很大的库(使用许多其他的东西),所以我更想知道在哪里查找。当我从命令行运行相同的脚本时,脚本运行得很好。我试着将“lang”设置为“c”,然后将“lc_all”设置为“c”,但没有效果。

    欢迎任何指点!

    4 回复  |  直到 16 年前
        1
  •  2
  •   brian d foy    16 年前

    lang和lc_所有环境变量都是为shell设置的,但它们不是为iis设置的。我不是一个i is人,但是文档上说iis是一个服务,你必须提前设置,然后重新启动。

    或者,您可以在脚本开始编译时设置这些变量(并且在加载导致问题的大型库之前):

    BEGIN {
     $ENV{LC_ALL} = ...;
     $ENV{LANG} = ...;
     }
    

    通过查看shell中的值来获取应该使用的值。

    祝你好运,

        2
  •  0
  •   brian d foy    16 年前

    可以通过设置PrLyBADLAN=0来抑制此错误,尽管需要设置LCYALALL。 之前 您的perl脚本运行。

        3
  •  0
  •   brian d foy    16 年前

    这个 perldoc for locale 可能会帮助你。它甚至有一个故障排除部分。

        4
  •  0
  •   Leon Timmermans    16 年前

    Perl应用程序似乎正在将其错误发送到浏览器,并且在发送头之前会发生错误。

    如果您使用的是CGI模块,第一个可能是由 use CGI::CARP qw(fatalsToBrowser) .

    在这种情况下 fatalsToBrowser 弊大于利,所以我建议你暂时关掉它。