[805] libcurl的使用总结(二)
[191] Memcache mutex设计模式
[129] 用Hyer来进行网站的抓取
[91] memcache-2.2.4 中的一点小知识
[88] 用于前端的模板引擎
[62] 给初入职场的你我一些建议
[54] 思考mysql内核之初级系列4--innodb缓冲区管理
[46] 思考mysql内核之初级系列6---innodb文件管理
[40] Python处理MP3的歌词和图片
[38] display: inline-block在IE6、IE7下bug的解决方...
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;
- [2010-06-29 14:41:52] Ubuntu下Postgresql-8.4安装及配置
- [2010-06-29 14:43:08] Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法
- [2010-07-14 17:00:21] 在Linux上编译安装PostgreSQL8.3.X
- [2010-06-25 18:00:35] Linux 下 PHP 5.2.x 连接 SQL Server 数据库 FreeTDS 配置笔记
- [2010-06-13 16:16:05] mysql 查看服务器端配置记得加global
- [2010-06-16 00:44:35] Linux(Ubuntu 10.04)上安装配置apache+php+mysql+phpmyadmin
- [2010-06-09 14:22:58] php.ini安全配置及使用说明
- [2010-05-28 00:56:14] Emacs安装配置
- [2010-05-19 21:47:29] 自己动手对Apache和PHP进行绿色安装
- [2010-05-19 22:27:52] lighttpd, web.py, spawning fcgi failed
- [2010-05-09 02:37:27] 在Mac OS X中运行Apache + PHP + MySQL
- [2010-04-09 16:00:13] CentOS vsftpd的安装与配置
- [2010-04-07 22:59:03] 在FreeNAS/BSD搭建基于Nginx+FastCGI+MySQL+PHP的WebServer
- [2010-03-23 00:48:13] 配置nginx
- [2010-03-24 14:17:00] 如何查看Linux 硬件配置信息
- [2009-12-29 23:55:12] windows7上配置IIS+ASP+PHP+MYSQL环境
- [2009-09-23 20:43:06] 如何在Windows下编译或调试MySQL
- [2009-11-14 21:24:41] MySQL服务启动脚本完全解析
- [2009-03-14 22:09:16] 在centos 5.2下安装最新的mysql proxy
- [2009-02-08 22:05:48] Apache高级配置中文详解
- [2007-08-16 17:12:41] Oracle 11g Linux单机STANDBY配置
- [2009-03-11 21:40:22] Apache配置文件学习(一)



Apache2中俩种设置PHP的异同
暂时还没有和您志趣相投的朋友评论,要不您先来?请见下方评论提交处: