加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

[PHP] PHP与Apache的模块配合说明

发布时间:2020-05-25 03:13:32 所属栏目:PHP 来源:互联网
导读:1.当PHP需要在Apache服务器下运行时一般来说,它可以mod_php5模块的形式集成, 此时mod_php5模块的作用是接收Apache传递过来的PHP文件请求,并处理这些请求, 然后将处理后的结果返回给Apache。加载方式有两种:Apache启动时的加载,或者运行的时候动态装载2.

1.当PHP需要在Apache服务器下运行时

一般来说,它可以mod_php5模块的形式集成, 此时mod_php5模块的作用是接收Apache传递过来的PHP文件请求,并处理这些请求, 然后将处理后的结果返回给Apache。加载方式有两种:Apache启动时的加载,或者运行的时候动态装载

2.Apache的运行过程Apache的运行分为启动阶段和运行阶段。 在启动阶段,Apache为了获得系统资源最大的使用权限,将以特权用户root(*nix系统)并且整个过程处于一个单进程单线程的环境中。 这个阶段包括配置文件解析(如http.conf文件)、模块加载(如mod_php,mod_perl)和系统资源初始化(例如日志文件、共享内存段、数据库连接等)等工作。在运行阶段,Apache主要工作是处理用户的服务请求。 在这个阶段,Apache放弃特权用户级别,使用普通权限,这主要是基于安全性的考虑,防止由于代码的缺陷引起的安全漏洞。通过Hook机制,将mod_php5的自定义函数注入请求处理循环中,参与php的处理

3.Apache2的mod_php5模块说明Apache中的module结构体,定义了很多成员PHP中的mod_php5模块,使用这个结构体定义,并赋值。其中有一个php_dir_cmds的成员,是个数组里面包括了几个php的指令,例如:php_value,php_admin_value等

Apache定义的结构体:

typedef * * module_struct * (*rewrite_args) (process_rec * *(*create_dir_config) (apr_pool_t *p, * *(*merge_dir_config) (apr_pool_t *p, *base_conf, * *(*create_server_config) (apr_pool_t *p,server_rec * *(*merge_server_config) (apr_pool_t *p, * command_rec * (*register_hooks) (apr_pool_t *

PHP中对结构体的赋值:

AP_MODULE_DECLARE_DATA module php5_module =<span style="color: #0000ff">const command_rec php_dir_cmds[] =<span style="color: #000000">
{
AP_INIT_TAKE2(<span style="color: #800000">"<span style="color: #800000">php_value<span style="color: #800000">"<span style="color: #000000">,php_apache_value_handler,NULL,OR_OPTIONS,<span style="color: #800000">"<span style="color: #800000">PHP Value Modifier<span style="color: #800000">"<span style="color: #000000">),AP_INIT_TAKE2(<span style="color: #800000">"<span style="color: #800000">php_flag<span style="color: #800000">"<span style="color: #000000">,php_apache_flag_handler,<span style="color: #800000">"<span style="color: #800000">PHP Flag Modifier<span style="color: #800000">"<span style="color: #000000">),AP_INIT_TAKE2(<span style="color: #800000">"<span style="color: #800000">php_admin_value<span style="color: #800000">"<span style="color: #000000">,php_apache_admin_value_handler,ACCESS_CONF|RSRC_CONF,<span style="color: #800000">"<span style="color: #800000">PHP Value Modifier (Admin)<span style="color: #800000">"<span style="color: #000000">),AP_INIT_TAKE2(<span style="color: #800000">"<span style="color: #800000">php_admin_flag<span style="color: #800000">"<span style="color: #000000">,php_apache_admin_flag_handler,<span style="color: #800000">"<span style="color: #800000">PHP Flag Modifier (Admin)<span style="color: #800000">"<span style="color: #000000">),AP_INIT_TAKE1(<span style="color: #800000">"<span style="color: #800000">PHPINIDir<span style="color: #800000">"<span style="color: #000000">,php_apache_phpini_set,RSRC_CONF,<span style="color: #800000">"<span style="color: #800000">Directory containing the php.ini file<span style="color: #800000">"<span style="color: #000000">),{NULL}
};

我的练习:

1.C语言数组int a[]={1,2,3,4};//整型数组char *b[]={"tao","shi","han"};//字符串数组printf("%d %s n",a[2],b[0]);

2.typedef:给类型起一个别名

* (*sum)( typedef ==

3.几个预定义宏:printf("%dn",__LINE__);//返回当前行数printf("%sn",__FILE__);//返回当前源文件名称

4.const:禁止修改变量的值,常量

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读