Apache – mod_perl:未知Authz提供者'访问'

我正在尝试在新的Linux环境中设置并运行一个旧的Web应用程序(编写于2010年)。 Apache服务器由于Unknown Authz provider access错误而未启动,这是由下面给出的configuration引起的。

 <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> 

我找不到任何文档,或者任何定义access apache模块,但是security::AuthCookieHandler

 sub access { ... ... } 

我明白,这是基于mod_perl的身份validation,但没有在此之前。 如果此身份validation被禁用,并且该应用程序在浏览器中加载,则Apache将启动。

所以问题是

  1. 是否require access应该从sub access获取返回值?
  2. 如果是这样,为什么sub accessconfiguration不可见?
  3. 如果不是这样,那么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或更高版本。

还必须使用PerlAddAuthzProvider添加自定义Authz提供程序

所以我能通过写作来解决这个问题

 PerlAddAuthzProvider access security::AuthCookieHandler->access ... ... <Directory /srv/webapp> ... ... require access </Directory>