我正在尝试在新的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将启动。
所以问题是
require access应该从sub access获取返回值? sub accessconfiguration不可见? 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>