代码之家  ›  专栏  ›  技术社区  ›  Ed Guiness

“use lib”适用于UNC路径吗?

  •  4
  • Ed Guiness  · 技术社区  · 17 年前

    我的托管脚本已被移动,不再工作。

    指定的CGI应用程序

    use lib 'd:/myorig/LIB';
    

    我现在有

    use lib '//newhost/LIB';
    

    这应该奏效吗?

    #!perl -w
    use lib '//whatever/lib';
    print "success";
    

    :ysth对FatalsToBrowser的建议确实揭示了更多信息。看起来路径(由托管公司的人添加)可能是错误的。

    :托管公司现在表示,这些脚本与之前的宿主思想没有变化,会抛出很多语法错误。“由于我们无法为您调试脚本,我们建议您联系原始程序员并寻求帮助”。 <grinds teeth>

    5 回复  |  直到 17 年前
        1
  •  2
  •   ojblass    17 年前

    use lib 你发布的行数并不相等。

    # go to the 'd' drive and use the 'myorigLIB' directory on that drive
    use lib 'd:/myorigLIB';
    
    # go to the 'newhostLIB' server - no path is specified - this looks invalid to me
    use lib '//newhostLIB';
    

    也许您需要指定服务器上共享的路径?此外,您可能需要查看权限?也许CGI正在运行的用户无法访问该网络路径?

    此外,你可以编写一个简单的(非CGI)程序来测试你的理论,然后运行它:

    #!perl -w
    use lib '//whatever/lib';
    print "success";
    

        2
  •  3
  •   1800 INFORMATION    17 年前

    不,路径不完整,它需要服务器名称和完整路径。这也是一种糟糕的做法,因为它要求监控两台机器,而不是一台机器,以便您的应用程序正常运行。

        3
  •  1
  •   ysth    17 年前
    The specified CGI application misbehaved by not returning a complete set of HTTP headers.
    

    考虑使用

    use CGI::Carp "fatalsToBrowser";
    

        4
  •  1
  •   jettero    17 年前

    我知道我在尝试使用apache的映射驱动器和unc路径时遇到了麻烦,因为不允许apache用户使用网络驱动器。这很难弄清楚,但有可能做到。这可能是一个相关的问题。

        5
  •  1
  •   name    17 年前
    #!perl -w
    
    print "HTTP/1.0 200 OK\nContent-Type: text/plain\n\n";
    
    my $path = "//whatever/lib";
    print "\nExists ", -e $path;
    print "\nDirectory ", -d $path;
    print "\nReadable ", -r $path;
    print "\nListing:\n";
    print "\t$_\n" for glob "$path/*";