У меня есть сценарий, написанный на 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 (), больше не могут быть разрешены.
script.cgi:
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard Vars);
require "includes/functions.cgi";
#blah blah, more stuff
script.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 включает /
functions.cgi functions.perl
includes/functions.perl
правильно расположен, но другую зависимостьbody.html.cgi
найти не удалось. Следует ли переименовать этот файл с.cgi
в.perl
, как вы, кажется, уже сделали? Он не был скопирован в каталог сценария mod_perl? - person pilcrow   schedule 29.06.2010