gpt4 book ai didi

perl - 如何在 OSX 上覆盖 httpd.conf 中的 @INC 设置

转载 作者:行者123 更新时间:2023-12-01 06:22:49 25 4
gpt4 key购买 nike

如何设置 Perl 在 OSX 上的 Apache httpd.conf 文件中查找模块的位置?

我已经通过 CPAN 安装了几个模块,它们都安装成功了

/opt/local/lib/perl5/site_perl/5.8.9

我可以通过 perldoc perllocal 验证这一点

如果我在命令行上运行 perl -V,我会得到(在其他目录中):

@INC:
/opt/local/lib/perl5/site_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/site_perl/5.8.9

但是,当我通过 Apache 将 perl 脚本作为 CGI 运行时,出现错误,提示无法找到我正在使用的模块。 @INC 中包含的目录列表与我的本地 perl 配置不匹配。

[error] [client 127.0.0.1] Can't locate Spreadsheet/ParseExcel.pm in @INC (
@INC contains:
/Library/Perl/Updates/5.8.8
/System/Library/Perl/5.8.8/darwin-thread-multi-2level
/System/Library/Perl/5.8.8
/Library/Perl/5.8.8/darwin-thread-multi-2level
/Library/Perl/5.8.8
/Library/Perl
/Network/Library/Perl/5.8.8/darwin-thread-multi-2level
...

在 OSX 上将 perl 作为 CGI 运行时如何设置 @INC - 我如何覆盖它?

最佳答案

@INC 的初始值在构建 perl 时是硬编码的,但可以通过多种方式对其进行修改。这里最方便的是

SetEnv PERL5LIB ...

从 Apache 配置中,或使用

use lib qw( ... );

从 Perl 脚本中。

也就是说,将使用 Perl 5.8.9 安装的模块与 Perl 5.8.8 一起使用是不安全的(尽管反过来也是安全的)。更糟糕的是,一个似乎是线程化的 Perl 而另一个不是。修改 @INC 根本行不通。

您需要使用与您打算用来运行脚本的相同的 perl 安装模块,或者您必须使用与运行脚本相同的 perl 来运行脚本用于安装模块的那个。

关于perl - 如何在 OSX 上覆盖 httpd.conf 中的 @INC 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718918/

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