【问题标题】:PERL5LIB environment variable inaccessible for perlscript launched from website从网站启动的 perlscript 无法访问 PERL5LIB 环境变量
【发布时间】:2014-02-12 13:51:56
【问题描述】:

我正在尝试从基于 PHP 的网站中启动 perl 脚本。在那个 perl 脚本中,我使用了一个安装在非标准位置的包。因此,要使该位置上的所有软件包都可用,而无需将 perl 启动为“perl -I /path/to/packages”,或放置“lib /path/to/packages;”在我制作的每个 perl 脚本中,我将“/path/to/packages”添加到 PERL5LIB 环境系统变量中,当普通用户执行脚本时一切正常。但是,当从网站启动这个 perl-script 时,所有环境系统变量似乎都无法访问(在 perl 中用 $ENV{"PERL5LIB"} 和 $ENV{"LOGNAME"} 测试,均未初始化),导致 perl脚本崩溃,因为它在@INC 中找不到所需的包。

如何在不使用“perl -I /path/to/packages script.pl”启动每个 perl 脚本且不放置“lib /path/to/packages;”的情况下使这些 perl 包可从网站启动在每个 perl 脚本之上?

【问题讨论】:

    标签: php perl webserver environment-variables


    【解决方案1】:

    有两种可能的解决方法:

    如果您拥有/访问网络服务器,则可以全局添加变量。

    (对于阿帕奇) http://www.perlmonks.org/?node_id=844715

    <Directory /var/www/>
        SetEnv PERL5LIB /your/lib/path
    

    另一种解决方法,您可以设置和维护与脚本相关的库,然后从 perl 脚本中访问它。请查看 FindBin 模块。 http://www.perl.com/pub/2002/05/14/mod_perl.html

    您可以将脚本存储在 ./bin/ 中,并将库存储在 ./lib/ 中

    如果您在多个地方使用您的库,您可以将其链接到 ./lib/。

      #!/usr/bin/perl
    
      use FindBin ();
      use lib "$FindBin::Bin../lib/";
      use test;
      print "test.pm => $INC{'test.pm'}\n";
    

    【讨论】:

    • 选项 3:在本地安装 perl 的构建(可能使用 perlbrew),为其安装模块,并在 shebang 行中链接到它。这样,当您的网络服务器升级其系统 Perl 时,您的代码不会中断
    【解决方案2】:

    您必须确保在您的网络服务器启动的环境中设置了 PER5LIB。

    您需要查阅特定 Web 服务器的手册以找到设置环境变量的配置命令,或者您需要修改启动器脚本(例如 apachectl)并添加逻辑以正确设置 PERL5LIB。

    aaaaannnd...有人在我发布此内容的同时发布示例...

    【讨论】:

      【解决方案3】:

      我向系统管理员寻求帮助,发现我们使用的不是 apache(如预期的那样)而是 nginx。话虽如此,解决方案是将 PERL5LIB 定义添加到 /etc/nginx/fastcgi_params 文件中,如下所示:

      sudo echo 'fastcgi_param  PERL5LIB    "custom/path/to/perl/modules";' >> /etc/nginx/fastcgi_params
      sudo service nginx reload
      

      感谢@LenJaffe 和@user1126070 为我指明了正确的方向!

      【讨论】:

        猜你喜欢
        • 2014-07-29
        • 2014-02-11
        • 1970-01-01
        • 1970-01-01
        • 2023-01-08
        • 2018-03-17
        • 2021-03-30
        • 2016-12-26
        • 2021-05-05
        相关资源
        最近更新 更多