0

错误日志:

[Tue Jun 17 12:08:35 2014] [error] [client 172.18.40.199] Perl v5.16.0 required--this is only v5.10.1, stopped at index.cgi line 2.
[Tue Jun 17 12:08:35 2014] [error] [client 172.18.40.199] BEGIN failed--compilation aborted at index.cgi line 2.
[Tue Jun 17 12:08:35 2014] [error] [client 172.18.40.199] Premature end of script headers: index.cgi

这是作为用户运行的:'support' 并且支持运行 perlbrew w/ 开关设置为 5.16.3,如下所示:

# su - support
print() on closed filehandle $fh at /loader/0x1cb94a8/App/perlbrew.pm line 19.
-bash-4.1$ perl -v

This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux

我需要做什么来确保 Apache 使用 perlbrew 安装的 perl 执行 index.cgi?

4

3 回答 3

2

#!操作系统执行由要求执行的脚本的 shebang () 行标识的解释器( index.cgi)。这只是指定您在perlbrew那里安装的解释器的路径的问题。

执行which perl(更熟悉)或perl -E'say $^X'(更可靠?)以确定所需的值。


让我们做一个例子。

在我的一台机器上,使用 5.18.2 的线程构建时,我得到以下信息。(你会得到不同的东西。)

$ which perl
/home/ikegami/usr/perlbrew/perls/5.18.2t/bin/perl

$ perl -E'say $^X'
/home/ikegami/usr/perlbrew/perls/5.18.2t/bin/perl

所以我会使用以下内容作为第一行index.cgi

#!/home/ikegami/usr/perlbrew/perls/5.18.2t/bin/perl
于 2014-06-17T17:36:12.677 回答
2

使用适当的 perl/bash shebang..

以下将完美地工作

#!/bin/bash
export PERLBREW_ROOT=/opt/perlbrew
export PERLBREW_HOME=/tmp/.perlbrew
export SHELL=/bin/bash #not really needed
unset XTERM_SHELL #not really needed
source ${PERLBREW_ROOT}/etc/bashrc
perlbrew use perl-5.21.9 > /dev/null 2>&1 # you can add your version here... 
eval 'exec perl -x -wS $0 ${1+"$@"}' if 0;
#! -*-perl-*-
# line 10 The above line/string resets the perldebug line-numbering... 
print "The perl interpretter running this code is $^X\n" ; 
print "This is perl version $^V\n" ; 
print "Hello PerlBrew \n" ;
die "This should be line number 14\n"  ; 
print "x\n" ; 

这将导致...

The perl interpretter running this code is /opt/perlbrew/perls/perl-5.21.9/bin/perl5.21.9
This is perl version v5.21.9
Hello PerlBrew 
This should be line number 14

希望这可以帮助...

G

于 2015-04-10T13:05:21.367 回答
0

index.cgi 中是否有 shebang?它指向哪个perl?

我相信 shebang 应该指向您的自定义 perl,而不是您展示的系统 perl。

于 2014-06-17T17:18:25.160 回答