Я пытаюсь настроить и запустить старое веб-приложение (написанное в 2010 году) в новой среде Linux. Сервер Apache не запускается из-за ошибки Unknown Authz provider access
, вызванный конфигурацией, приведенной ниже.
<Directory /srv/webapp>
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
SetOutputFilter DEFLATE
ExpiresActive On
ExpiresDefault "3 Months"
AuthType security::AuthCookieHandler
AuthName Maxio
PerlAuthenHandler security::AuthCookieHandler->authenticate
PerlAuthzHandler security::AuthCookieHandler->authorize
require access
</Directory>
Я не смог найти ни документации по этому поводу, ни какого-либо модуля apache, который определяет access
, но security::AuthCookieHandler
имеет
sub access
{
...
...
}
Я так понимаю это mod_perl
основанная на аутентификации, но раньше над этим не работал. Apache запускается, если эта аутентификация отключена, и приложение загружается в браузере.
Итак, вопросы
require access
должен получить возвращаемое значение из sub access
?sub access
в конфигурации не видно?access
Вот ?После нескольких часов исследования я обнаружил, что это из-за изменений в последних версиях Apache и mod_perl.
Из следующих документов,
https://metacpan.org/release/Apache-AuthCookie https://metacpan.org/pod/distribution/Apache-AuthCookie/README.apache-2.4.pod
Я так понял, что Apache 2.4 требует mod_perl версии 2.0.9 или выше.
Также необходимо добавить настраиваемый поставщик Authz с помощью PerlAddAuthzProvider
Итак, я смог решить это, написав
PerlAddAuthzProvider access security::AuthCookieHandler->access
...
...
<Directory /srv/webapp>
...
...
require access
</Directory>