Apache-Mod Perl-Unknown Authz提供程序';访问';

Apache-Mod Perl-Unknown Authz提供程序';访问';,perl,apache2,mod-perl,Perl,Apache2,Mod Perl,我正在尝试在新的Linux环境中设置和运行一个旧的Web应用程序(编写于2010年)。Apache服务器未启动,因为下面给出的配置导致错误未知Authz提供程序访问 <Directory /srv/webapp> Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch SetOutputFilter DEFLATE ExpiresActive On ExpiresDefault "3 Months"

我正在尝试在新的Linux环境中设置和运行一个旧的Web应用程序(编写于2010年)。Apache服务器未启动,因为下面给出的配置导致错误
未知Authz提供程序访问

<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>
我知道这是基于
mod_perl
的身份验证,但以前从未使用过。如果禁用此身份验证,并且应用程序在浏览器中加载,Apache将启动

所以问题是

  • require-access
    是否应该从
    子访问
    获取返回值
  • 如果是,为什么配置看不到
    子访问
  • 如果不是,这里的
    access
    是什么

  • 经过几个小时的研究,我发现这是因为Apache和mod_perl的最新版本发生了变化

    从和中,我了解到Apache2.4需要mod_perl版本2.0.9或更高版本

    此外,必须使用
    PerlAddAuthzProvider
    添加自定义Authz提供程序。我能够通过这样做来解决我的问题

    PerlAddAuthzProvider access security::AuthCookieHandler->access
    ...
    ...
    <Directory /srv/webapp>
        ...
        ...
        require access
    </Directory>
    
    PerlAddAuthzProvider访问安全::AuthCookieHandler->access
    ...
    ...
    ...
    ...
    需要访问
    
    PerlAddAuthzProvider access security::AuthCookieHandler->access
    ...
    ...
    <Directory /srv/webapp>
        ...
        ...
        require access
    </Directory>