mod_ext_filter 和 mod_filter 之间的区别?

Posted

技术标签:

【中文标题】mod_ext_filter 和 mod_filter 之间的区别?【英文标题】:Difference between mod_ext_filter and mod_filter? 【发布时间】:2016-05-06 09:51:07 【问题描述】:

我使用this 指南在 CentOS 6.4 服务器上安装了 php 5.6.17。 Contao 安装正在该服务器上运行。 Contao 在其默认的 .htaccess 中带有这些指令:

##
# Gzip compression
# @see https://github.com/h5bp/html5-boilerplate
##
<IfModule mod_deflate.c>
  <IfModule mod_filter.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
    AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
    AddOutputFilterByType DEFLATE image/x-icon image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
  </IfModule>
</IfModule>

这将启用自动 Gzip 压缩。但是,在该服务器上,我注意到默认情况下未启用 mod_filter 扩展,即使它应该是 php56w-common 包的一部分(参见 https://webtatic.com/packages/php56/)。我确实注意到启用了mod_ext_filter 扩展 - 我相应地更改了我的指令(用mod_ext_filter 替换mod_filter)这似乎有效。

我以前从未见过mod_ext_filter,所以我想知道这两个模块之间的确切区别是什么(以及为什么更常见的(?)mod_filter 模块在 CentOS 的php56w-common 包中不可用)。

【问题讨论】:

【参考方案1】:

“我相应地更改了我的指令(用 mod_ext_filter 替换 mod_filter),这似乎有效。”我无法想象这可能意味着什么,但这两个模块使用完全不同的指令并服务于不同的目的。 mod_ext_filter 允许您在您选择的外部脚本中编写过滤器。 mod_filter 运行从已编译模块加载的过滤器。

Apache 模块 mod_filter

描述:上下文相关的智能过滤器配置模块

https://httpd.apache.org/docs/2.2/mod/mod_filter.html

Apache 模块 mod_ext_filter

描述:将响应正文通过外部程序传递给客户端之前

https://httpd.apache.org/docs/2.2/mod/mod_ext_filter.html

如果——正如我所怀疑的——你没有使用任何一个模块,为什么要加载它们?

编辑:您指的是 PHP 过滤模块吗?如果是这样,那么它就永远内置在 PHP 中了。运行 php -m | grep filter 以查看为您自己列出的内容。

【讨论】:

抱歉,我在原帖中添加了更多信息。我明白了,所以mod_ext_filtermod_filter 完全不同。奇怪的是,即使mod_filter 未加载(根据phpinfo() 并看到由于&lt;IfModule mod_filter.c&gt; 指令而未启用Gzip 压缩),AddOutputFilterByType DEFLATE … 指令仍然有效。怎么可能? 事实证明,有问题的服务器运行的是较旧的 Apache 版本,其中集成了 mod_filter,因此不能作为模块使用。这就是它起作用的原因。

以上是关于mod_ext_filter 和 mod_filter 之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理