У меня есть веб-приложение Perl, которое работает как на Apache, так и на IIS6 в Windows Server 2003. На Apache этот скрипт отлично работает. В IIS с использованием ISAPI я получаю следующее сообщение об ошибке:
Программная ошибка:
Невозможно загрузить lib / auto / Sub / Name / Name.dll для модуля Sub :: Name: load_file: указанный модуль не может быть найден в строке 230 C: /Perl/lib/DynaLoader.pm в lib / DBIx / Class / Schema.pm строка 10
Компиляция завершилась неудачно в строке 10 lib / DBIx / Class / Schema.pm.Ошибка BEGIN - компиляция прервана в строке 10 lib / DBIx / Class / Schema.pm.
Ошибка компиляции при требовании в строке 3 (eval 39) ... распространена в строке 314 C: /Perl/lib/CGI/Carp.pm.
Ошибка BEGIN - компиляция прервана в строке 2 My / Schema.pm. Не удалось выполнить компиляцию при требовании в ...
Когда НЕ используется ISAPI в IIS, он работает нормально. Мы бы предпочли продолжать использовать ISAPI в наших средах IIS. Почему он не может найти этот модуль, даже если он находит его при запуске обычного Perl?
РЕДАКТИРОВАТЬ:
Мы называли это относительными путями.
use lib qw{My lib}; # line in question
use My::Schema; # explodes
Mobrule, обращаясь к переполнению стека, дал нам поучительный комментарий. Относительный путь отличался при использовании ванильного интерпретатора Perl и ISAPI.
use lib qw{My /Inetpub/wwwroot/cgi/lib}; # a little more specific...
use My::Schema; # not nearly as much dying now.
Спасибо за помощь!