我正在为名为helloworld
的.php和.html文件创建一个虚拟处理程序。处理程序包含:
static int helloworld_handler(request_rec *r){
ap_rprintf(r, "hello world!");
return OK;
}
我在apache2.conf中得到了这个:
<Directory /var/www/html>
AddHandler helloworld .php .html
</Directory>
处理程序“helloworld”适用于.html文件,但它不适用于.php文件。我认为这主要是因为默认的PHP处理程序会覆盖.php文件的helloworld处理程序。如何使“helloworld”处理程序适用于.php文件?
如果需要任何额外信息,请询问。
答案 0 :(得分:4)
您可能想尝试SetHandler而不是
<FilesMatch \.php$>
SetHandler helloworld
</FilesMatch>
答案 1 :(得分:0)
SetHandler将删除任何先前设置的处理程序。要获得处理程序首先运行的选项,然后在处理程序返回DECLINE时运行默认的PHP处理程序,首先需要设置你的处理程序,然后添加PHP
<FilesMatch \.html$>
SetHandler helloworld .html
</FilesMatch>
<FilesMatch \.php$>
SetHandler helloworld .php
AddHandler php5-script .php
</FilesMatch>
请注意,这样可以清除以前为.html文件设置的任何处理程序
每个请求只能有一个处理程序处理任何文件类型。如果您始终希望首先运行PHP解释器,然后运行第二个处理程序,则可以考虑使用AddOutputFilter指令。
大多数阶段由处理它们的第一个模块终止;但是,对于日志记录,`fixups&#39;以及非访问身份验证检查,所有处理程序始终运行(禁止出错)。
答案 2 :(得分:-3)
添加处理程序后需要重新启动Apache服务器。
还检查服务器是否实际按照您希望的方式解释扩展。您可以从托管服务提供商的系统管理员处检查该类信息。许多系统管理员禁用某些功能以提高安全性。