У меня есть сценарий, написанный на Perl и выполненный как CGI. Он работает нормально. Недавно я установил модуль mod_perl в apache и использовал директиву PerlModule ModPerl :: Registry.mod_perl обрабатывает пути включения иначе, чем cgi?
Я читал, что, используя это, мне не нужно изменять свой код 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
Похоже, что 'включает/функции .perl' правильно расположен, но не может быть найдена другая зависимость 'body.html.cgi'. Должен ли этот файл также переименован из '.cgi' в' .perl', как вы, кажется, сделали? Не удалось ли скопировать его в каталог скрипта mod_perl? – pilcrow
Извините, я написал неправильное сообщение об ошибке. Сообщение об ошибке, которое оно вернуло, было «Невозможно найти include/functions.perl в @INC», body.html.cgi - это что-то еще, не связанное с этим. –