Apache2中俩种设置PHP的异同
Apache2开始引入了Hook方式, 对应的在PHP中也提供了apache2handler这种sapi.
和我之前介绍过的PHP lifecycle不同, 这种情况下的PHP, 通过注册handler钩子, 从而可以在handler hook阶段有机会处理请求, 通过判断请求的handler, 来确定是否需要处理, 如果需要就会调用自身的处理器.
那么, 这种情况下也就有了多种配置方法, 主要考虑如下俩种方式(第二种可以有多种变种):
- 第一种: AddType application/x-httpd-php .php
- 第二种:
- <FilesMatch \.php$>
- SetHandler application/x-httpd-php
首先来说, 这俩中方式的起作用的时刻不同, 对于第一种方式来说, 他是在type_check钩子阶段起作用的, 也就是在apache2src/modules/http/mod_mime.c中, 通过注册type_checker钩子, 加入find_ct(content_type), 在find_ct中, 通过配置文件中的mime映射, 或者是通过addType指令增加的映射, 根据文件的扩展来填充请求中的handler字段:
而对于第二种方式, 是在fixup钩子阶段, 通过注册fixups钩子阶段加入core_override_type(apache2src/server/core.c)函数, 来将目录级的配置指令生效.
而fixups钩子是晚于type_checker钩子的, 也是handler钩子之前最后的一个可以利用的钩子. 所以如果同时采用1,2俩种方式, 那么第二种方式会覆盖第一种方式设置的handler.
其次, 俩种方式依赖的数据结构不同, 第一种方式依赖的是一个全局的mime对照表extension_mappings, 这个表由mime配置文件和AddType指令而来.
而对于第二种方式, 它是根据配置文件构造的dir_config而来:
- ....
- core_dir_config *conf =
- (core_dir_config *)ap_get_module_config(r->per_dir_config,
- &core_module);
- /* Check for overrides with ForceType / SetHandler
- */
- if (conf->mime_type && strcmp(conf->mime_type, "none"))
- ap_set_content_type(r, (char*) conf->mime_type);
- if (conf->handler && strcmp(conf->handler, "none"))
- r->handler = conf->handler;
建议继续学习:
- 配置Nginx+uwsgi更方便地部署python应用 (阅读:106511)
- Linux 下 PHP 5.2.x 连接 SQL Server 数据库 FreeTDS 配置笔记 (阅读:10835)
- nginx的配置文件 (阅读:9599)
- Emacs安装配置 (阅读:8087)
- 如何查看Linux 硬件配置信息 (阅读:6886)
- Centos yum 安装nginx+PHP-FPM+eAccelerator+mysql (阅读:6356)
- SVN Hook造成SVN提交速度慢的问题 (阅读:6007)
- Linux(Ubuntu 10.04)上安装配置apache+php+mysql+phpmyadmin (阅读:5738)
- 在FreeNAS/BSD搭建基于Nginx+FastCGI+MySQL+PHP的WebServer (阅读:5319)
- 在Mac OS X中运行Apache + PHP + MySQL (阅读:5110)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:雪候鸟 来源: 风雪之隅
- 标签: apache2handler Hook 配置
- 发布时间:2010-02-25 22:42:33
配置Nginx+uwsgi更方便地部署python应用
Linux 下 PHP 5.2.x 连接 SQL Server 数据库 FreeTDS 配置笔记
nginx的配置文件
Emacs安装配置
如何查看Linux 硬件配置信息
Centos yum 安装nginx+PHP-FPM+eAccelerator+mysql
SVN Hook造成SVN提交速度慢的问题
Linux(Ubuntu 10.04)上安装配置apache+php+mysql+phpmyadmin
在FreeNAS/BSD搭建基于Nginx+FastCGI+MySQL+PHP的WebServer
在Mac OS X中运行Apache + PHP + MySQL
-
[1188] WordPress插件开发 -- 在插件使用 -
[79] 解决 nginx 反向代理网页首尾出现神秘字 -
[43] web开发设计人员不可不用的在线web工具和 -
[36] Java开发岗位面试题归类汇总 -
[30] 手机产品设计方向 -
[30] Rax 系列教程(长列表) -
[29] 一句话crontab实现防ssh暴力破解 -
[27] 如何建立合适的索引? -
[27] 程序员疫苗:代码注入 -
[25] 我对学习oracle与成长的理解