2012-06-29 3 views
0

FGMap을 사용하여 FlightGear에 대한 맵을 표시하도록 아파치 서버를 설정하려고합니다. 맵 페이지의 모든 웹 서버 파일은/var/www/fgmap에 있습니다. /var/www/fgmap/sg_perl/blib/lib/sgmath.pm에서 라이브러리를 사용하려고 시도하는 fg_server_xml.cgi 스크립트를 호출합니다. (Blib은 참조 용으로 같은 디렉토리에있는 다른 폴더에 대한 심볼릭 링크입니다 -/var/www/fgmap/sg_perl/blibx86-64)동일한 폴더에서 동일한 라이브러리를 사용하는 두 개의 펄 스크립트 - 하나는 액세스 할 수 있고 다른 하나는 액세스 할 수 없습니다.

fg_server_xml.cgi는 액세스하려고 할 때 내부 서버 오류 500을줍니다 페이지 및 아파치 오류 로그를 보여

[Sat Jun 30 07:59:48 2012] [warn] -T switch is ignored, enable with 'PerlSwitches -T' in httpd.conf\n 
[Sat Jun 30 07:59:48 2012] [error] Can't locate sgmath.pm in @INC (@INC contains: /var/www/sg_perl/blib/arch/auto/sgmath 
/var/www/sg_perl/blib/lib /etc/perl /usr/local/lib/perl/5.14.2 
/usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 
/usr/local/lib/site_perl . /etc/apache2) 
at /var/www/fgmap/fg_server_xml.cgi line 14.\nBEGIN failed--compilation aborted at /var/www/fgmap/fg_server_xml.cgi 
line 14.\n 

그러나, 나는이 같은 라이브러리를 참조하고 그것에서 하나 개의 함수를 실행하고 출력을 인쇄 같은 디렉토리에 다른 펄 스크립트, sg_test.pl 떨어졌다. 이 스크립트는 잘 작동하며 라이브러리를 찾을 수 있습니다.

라이브러리 호출에서 동일하고 동일한 위치에있는 하나의 스크립트가 다른 파일에 액세스하는 데 문제가없는 파일을 찾을 수없는 이유는 무엇입니까?

내 이론 중 하나는 아파치가 권한이 없거나 sgmath.pm이있는 폴더에 액세스 할 수있는 사용자로 액세스하려고하기 때문에 WWW의 모든 폴더/하위 폴더/파일에 액세스 할 수있게했습니다. 모든 사용자에게. 아직도 운이 없다.

아파치가 확실히 .cgi를 사용할 수 있습니다. 문제가 없는데, 잘 작동하는 .cgi 파일을 테스트했습니다.

감사합니다.

편집 :

use lib "/var/www/sg_perl/blib/lib"; 
use lib "/var/www/sg_perl/blib/arch/auto/sgmath"; 
use sgmath; 

답변

4

use lib을 사용하여 문제의 라이브러리 호출, 당신은

/var/www/sg_perl/blib/lib 

을 추가하지만 파일이 후자의 경로가 아닌

/var/www/fgmap/sg_perl/blib/lib 

에 말했다 @INC에 있습니다 (오류 메시지를 확인하여 확인).

+0

세상에, 농담이야. 어느 쪽도 절대적으로 작동하지 않는 상대 경로에서 변경했을 때 나는 fgmap 디렉토리를 추가하지 않았다. 정말 고맙습니다. –

+1

상대 경로는 아마도'$ 0' 디렉토리가 아닌 cwd (CGI 스크립트의'/')와 관련되어 있기 때문에 작동하지 않을 것입니다. ['use mylib;'] (http://search.cpan.org/perldoc?mylib) 일반적으로 속임수를 사용합니다. 그렇지 않으면 ['use lib :: findbin '... relpath ...';'] (http://search.cpan.org/perldoc?lib::findbin)을 사용할 수 있습니다. – ikegami

+0

흠, 알았어. 알아 둘만한! 다시 한번 고마워요.이 작은 일에 큰 골치 거리였습니다. –

관련 문제