如何为apache2 mod_cgi指定Perl版本?

时间:2015-05-08 11:55:21

标签: perl cgi

我在Fedora 21系统上安装了其他版本的Perl。 在PATH上,我的自定义Perl(5.10.0)优先于发行版的默认Perl(5.18.4)

user$ perl -v
> This is perl, v5.10.0 built for x86_64-linux

root# perl -v
> This is perl, v5.10.0 built for x86_64-linux

但是,在Apache提供的脚本中打印Perl版本时,它似乎正在使用"错误的"版本:

5.018004

如何指导Apache使用特定版本的Perl?

1 个答案:

答案 0 :(得分:2)

使用普通CGI时,操作系统(通过#!行)负责选择解释器。正如我们所建立的那样,shebang指的是错误版本的翻译。

最简单的方法是编辑它。如果你需要相同的脚本来处理两个不同的perl版本,具体取决于调用上下文,你可以在shebang中使用类似#!/usr/bin/env perl的东西让它尊重环境,然后为apache更改PATH变量

如果您无法编辑shebang,可以选择通过mod_perl(确保根据所需版本进行编译),如果您不介意使用此特定版本的整个网络服务器。

另一种方法是在某种容器(chroot,lxc,docker或仅使用mount命名空间)中运行webserver,以便/usr/bin/perl指向其他版本的解释器。