我有一个用 perl 编写并作为 CGI 执行的脚本。它工作正常。最近我将 mod_perl 模块安装到 apache 中,并使用了 PerlModule ModPerl::Registry 指令。
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 代码。(我总是使用严格的编译指示,所以不要担心未初始化的全局变量和类似的东西)。
我的原始脚本仍然按预期工作,除了一件事,我包含在 require() 函数中的文件不再可以解析。
脚本.cgi:
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard Vars);
require "includes/functions.cgi";
#blah blah, more stuff
脚本.perl
#!/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
目录结构是这样工作的:
$ ls
script.cgi script.perl 包括/
$ ls 包括/
函数.cgi 函数.perl