У меня есть приложение Dancer2, которое я тестировал локально, и пытаюсь развернуть его на сервере Ubuntu 19.10.
У меня нет ошибок при запуске в качестве автономного приложения с использованием
plackup bin/app.psgi
Однако при запуске с сервером apache я пытался использовать работает как развертывание на плате , используя следующие директивы apache:
<Location /webwork3>
SetHandler perl-script
PerlResponseHandler Plack::Handler::Apache2
PerlSetVar psgi_app /opt/webwork/webwork2/webwork3/bin/app.psgi
</Location>
Я получаю следующую ошибку:
Error while loading /opt/webwork/webwork2/webwork3/bin/app.psgi: Can't locate loadable object
for module main::Tie::Hash::NamedCapture in @INC (@INC contains: /opt/webwork/pg/lib /opt/webwork/webwork2/webwork3/lib
/opt/webwork/webwork2/lib /usr/lib/x86_64-linux-gnu/perl/5.28.1/auto /etc/perl
/usr/local/lib/x86_64-linux-gnu/perl/5.28.1 /usr/local/share/perl/5.28.1
/usr/lib/x86_64-linux-gnu/perl5/5.28 /usr/share/perl5
/usr/lib/x86_64-linux-gnu/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /etc/apache2)
at /usr/local/share/perl/5.28.1/Dancer2/Core/Route.pm line 101.
Compilation failed in require at /usr/local/share/perl/5.28.1/Dancer2/Core/Route.pm line 101.
BEGIN failed--compilation aborted at /usr/local/share/perl/5.28.1/Dancer2/Core/Route.pm line 101.
Compilation failed in require at /usr/local/share/perl/5.28.1/Dancer2/Core/App.pm line 26.
BEGIN failed--compilation aborted at /usr/local/share/perl/5.28.1/Dancer2/Core/App.pm line 26.
Compilation failed in require at /usr/local/share/perl/5.28.1/Dancer2.pm line 11.
BEGIN failed--compilation aborted at /usr/local/share/perl/5.28.1/Dancer2.pm line 11.
Compilation failed in require at /opt/webwork/webwork2/webwork3/bin/app.psgi line 30.
BEGIN failed--compilation aborted at /opt/webwork/webwork2/webwork3/bin/app.psgi line 30.
Я знаю, NamedCapture
имеет и .pm
версия в /usr/lib/x86_64-linux-gnu/perl/5.28.1/Tie/Hash/NamedCapture.pm
и .so
версия в /usr/lib/x86_64-linux-gnu/perl/5.28.1/auto/Tie/Hash/NamedCapture/NamedCapture.so
, и оба они в @INC
. Кажется, ошибка can't locate loadable object
в том, что исполняемый файл не может быть найден, но .pm
может.
Они были установлены с модулем libperl5.28
с apt
. Я читал, что при установке часто возникает проблема с такой ошибкой.
Я также проверил разрешения для каталогов, и они доступны для чтения всем. Опять же, хотя странно, что он работает под автономным приложением, но не под apache.