我在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?
答案 0 :(得分:2)
使用普通CGI时,操作系统(通过#!行)负责选择解释器。正如我们所建立的那样,shebang指的是错误版本的翻译。
最简单的方法是编辑它。如果你需要相同的脚本来处理两个不同的perl版本,具体取决于调用上下文,你可以在shebang中使用类似#!/usr/bin/env perl
的东西让它尊重环境,然后为apache更改PATH
变量
如果您无法编辑shebang,可以选择通过mod_perl
(确保根据所需版本进行编译),如果您不介意使用此特定版本的整个网络服务器。
另一种方法是在某种容器(chroot,lxc,docker或仅使用mount命名空间)中运行webserver,以便/usr/bin/perl
指向其他版本的解释器。