手机版    搜索本站    作者列表
您现在的位置首页 --> Apache --> Apache2中俩种设置PHP的异同

Apache2中俩种设置PHP的异同

  出处信息

Apache2开始引入了Hook方式, 对应的在PHP中也提供了apache2handler这种sapi.

和我之前介绍过的PHP lifecycle不同, 这种情况下的PHP, 通过注册handler钩子, 从而可以在handler hook阶段有机会处理请求, 通过判断请求的handler, 来确定是否需要处理, 如果需要就会调用自身的处理器.

那么, 这种情况下也就有了多种配置方法, 主要考虑如下俩种方式(第二种可以有多种变种):

  1. 第一种: AddType application/x-httpd-php .php
  2. 第二种:
  3.       <FilesMatch \.php$>
  4.           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而来:

  1. ....
  2.   core_dir_config *conf =
  3.         (core_dir_config *)ap_get_module_config(r->per_dir_config,
  4.                                                 &core_module);
  5.  
  6.     /* Check for overrides with ForceType / SetHandler
  7. */
  8.     if (conf->mime_type && strcmp(conf->mime_type, "none"))
  9.         ap_set_content_type(r, (char*) conf->mime_type);
  10.  
  11.     if (conf->handler && strcmp(conf->handler, "none"))
  12.         r->handler = conf->handler;

 

我们猜你喜欢:

  1. 配置Nginx+uwsgi更方便地部署python应用    (阅读:97960)
  2. Emacs安装配置    (阅读:4940)
  3. nginx的配置文件    (阅读:4340)
  4. Linux(Ubuntu 10.04)上安装配置apache+php+mysql+phpmyadmin    (阅读:4100)
  5. Centos yum 安装nginx+PHP-FPM+eAccelerator+mysql    (阅读:3920)
  6. 在FreeNAS/BSD搭建基于Nginx+FastCGI+MySQL+PHP的WebServer    (阅读:3700)
  7. 如何查看Linux 硬件配置信息    (阅读:3460)
  8. lighttpd, web.py, spawning fcgi failed    (阅读:2900)
  9. 在Mac OS X中运行Apache + PHP + MySQL    (阅读:2660)
  10. php.ini安全配置及使用说明    (阅读:2660)
© 2009 - 2013 本页面所有内容,转载请注明出处 站长Email:blogread.cn@gmail.com

京ICP备09017802号 powered by sae
推荐继续阅读:Emacs安装配置
【关闭推荐】

简介:先介绍如何在windows下安装Emacs windows环境下emacs的安装相对linux而言比较简单,实际上只需要去下载一个编译好的二进制包即可,就像绿色软件一样,将下载的emacs解压到目录下,就可以开始使......