2014-06-17 3 views
0

오류 로그 :Apache에서 perlbrew를 사용하여 CGI 스크립트를 제공하려면 어떻게해야합니까? 아래 그림과 같이 '지원'과 5.16.3로 설정/스위치 w perlbrew 지원 실행 :

[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 

이것은 사용자로 실행

# 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 

나는 무엇을해야합니까 아파치가 perlbrew가 설치 한 perl을 가지고 index.cgi를 실행하도록 보장 하시겠습니까?

답변

2

OS는 실행을 요청한 스크립트 (index.cgi)의 shebang (#!) 행에 의해 식별 된 인터프리터를 실행합니다. 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 
0

index.cgi에 새틴 (shebang)이 있습니까? 어떤 perl이 가리키고 있습니까?

나는 shebang이 당신이 보여준 시스템 perl이 아니라 당신의 custom perl을 가리켜 야한다고 믿습니다.

+0

#는/usr/빈/펄 사용 v5.16! 엄격한 사용; 경고를 사용하십시오. – morissette

+0

이 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. – vonbrand

+0

@vonbrand, 대답은 정확하게 높은 품질은 아니지만 질문에 답합니다. 수사학적인 질문으로 첫 단락을 가져 가라. – ikegami

2

가 적절한 펄/bash는 오두막을 사용 ..

다음은 완벽하게

#!/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+"[email protected]"}' 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" ; 

이 ...

에서 발생합니다 그 작동합니다 이 도움이 17,451,515,
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