나는 perl로 작성되고 CGI로 실행되는 스크립트를 가지고있다. 그것은 잘 작동합니다. 최근 아파치에 mod_perl 모듈을 설치하고, PerlModule ModPerl :: Registry 지시어를 사용했습니다.mod_perl이 포함 경로를 cgi와 다르게 처리합니까?
PerlModule ModPerl::Registry
PerlModule CGI
PerlSendHeader On
Alias /perl/ /real/path/to/perl/scripts/
<Location /perl>
SetHandler perl-script
PerlHandler ModPerl::Registry
Options ExecCGI
</Location>
<Files *.perl>
SetHandler perl-script
PerlHandler ModPerl::Registry
Options ExecCGI
</Files>
나는 이것을 사용하여 내 cgi perl 코드를 수정할 필요가 없음을 읽었습니다. (저는 항상 엄격한 pragma를 사용합니다. 그래서 초기화되지 않은 전역 변수와 그런 것들에 대해 걱정하지 마십시오.)
내 원래 스크립트는 한 가지를 제외하고는 의도 한대로 작동하지만 require() 함수에 포함 된 파일은 더 이상 해석 할 수 없습니다.
script.cgi :
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard Vars);
require "includes/functions.perl"; # <---- Returns error: Can't locate includes/functions.perl in @INC
#blah blah, more stuff
디렉토리 구조는 다음과 같이 작동
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard Vars);
require "includes/functions.cgi";
#blah blah, more stuff
script.perl :
이 이$ 1!
script.cgi의 script.perl 포함 /
$ 1! 포함/
functions.cgi의 functions.perl에서
'includes/functions .perl'은 제대로 위치하고 있지만, 더 의존성 인,'body.html.cgi'을 찾을 수 없습니다. 이 파일의 이름도'.cgi'에서'.perl'로 바꿔야 할 것 같습니다. mod_perl 스크립트의 디렉토리에 복사되지 않았습니까? – pilcrow
오 죄송합니다. 잘못된 오류 메시지를 썼습니다. 반환 된 오류 메시지는 "Include/functions.perl in @INC"를 찾을 수 없습니다. body.html.cgi은 이것과 무관 한 다른 것입니다. –