<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="详解php中的ini配置原理及示例代码说明" id="card1">
<p> 游客</p><p>
标题:详解php中的ini配置原理及示例代码说明<br/>
正文:<br/>
使用php的同学都知道php.ini配置的生效会贯穿整个SAPI的生命周期。在一段php脚本的执行过程中，如果手动修改ini配置，是不会启作用的。此时如果无法重启apache或者nginx等，那么就只能显式的在php代码中调用ini_set接口。ini_set是php向我们提供的一个动态修改配置的函数，需要注意的是，利用ini_set所设置的配置与ini文件中设置的配置，其生效的时间范围并不相同。在php脚本执行结束之后，ini_set的设置便会随即失效。因此本文打算分两篇，第一篇阐述php.ini配置原理，第二篇讲动态修改php配置。php.ini的配置大致会涉及到三块数据，configuration_hash，EG(ini_directives)以及PG、BG、PCRE_G、JSON_G、XXX_G等。如果不清楚这三种数据的含义也没有关系，下文会详细解释。1，解析INI配置文件由于php.ini需要在SAPI过程中一直生效，那么解析ini文件并据此来构建php配置的工作，必定是发生SAPI的一开始。换句话说，也就是必定发生在php的启动过程中。php需要任意一个实际的请求到达之前，其内部已经生成好这些配置。反映到php的内核，即为php_module_startup函数。php_module_startup主要负责对php进行启动，通常它会在SAPI开始的时候被调用。btw，还有一个常见的函数是php_request_startup，它负责将在每个请求到来的时刻进行初始化，php_module_startup与php_request_startup是两个标识性的动作，不过对他们进行分析并不在本文的探讨范围内。举个例子，当php挂接在apache下面做一个module，那么apache启动的时候，便会激活所有这些module，其中包括php module。在激活php module时，便会调用到php_module_startup。php_module_startup函数完成了茫茫多的工作，一旦php_module_startup调用结束就意味着，OK，php已经启动，现在可以接受请求并作出响应了。在php_module_startup函数中，与解析ini文件相关的实现是：代码如下: /* this will read in php.ini, set up the<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1823&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1823&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1823&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1823&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1823&amp;Page=19">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1823">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1823">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>