首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从网站启动的perlscript无法访问PERL5LIB环境变量

从网站启动的perlscript无法访问PERL5LIB环境变量
EN

Stack Overflow用户
提问于 2014-02-12 13:51:56
回答 3查看 1.1K关注 0票数 0

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

我如何使那些perl包可以从网站上发布,而不使用"perl -I /path/to/ script.pl“,而不将"lib /path/to/packages”放在每个perl脚本之上呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-21 08:23:21

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

代码语言:javascript
复制
sudo echo 'fastcgi_param  PERL5LIB    "custom/path/to/perl/modules";' >> /etc/nginx/fastcgi_params
sudo service nginx reload

谢谢你@LenJaffe和@ right 1126070为我指明了正确的方向!

票数 0
EN

Stack Overflow用户

发布于 2014-02-12 14:55:19

解决这个问题有两种可能的方法:

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

(用于apache) id=844715

代码语言:javascript
复制
<Directory /var/www/>
    SetEnv PERL5LIB /your/lib/path

另一个解决方法是,您可以设置和维护与脚本相关的库,然后从您的perl脚本中获得它。为此,请查看FindBin模块。perl.html

您可以将脚本./bin/和库存储在./lib/。

如果您使用的库不止一个,可以将其链接到./lib/。

代码语言:javascript
复制
  #!/usr/bin/perl

  use FindBin ();
  use lib "$FindBin::Bin../lib/";
  use test;
  print "test.pm => $INC{'test.pm'}\n";
票数 0
EN

Stack Overflow用户

发布于 2014-02-12 14:57:05

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

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

啊..。在我发这篇文章的同时,有人在发例子.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21729877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档