使用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的配置大致会涉及到三块数据,config PHP中的ini配置是PHP环境的核心组成部分,用于定义各种运行时参数和设置。这些配置通过`php.ini`文件进行管理,其原理和作用至关重要。当PHP解释器启动时,它会读取并解析`php.ini`文件,根据其中的指令设置环境参数。这个过程在SAPI(Server API)生命周期的早期阶段发生,确保在整个应用程序运行期间,配置信息始终保持有效。 `php.ini`文件的格式简洁明了,由键值对组成,键是配置选项,值是对应的设定值。例如,`display_errors = On`会开启错误显示。在PHP内核中,这些配置项被存储在一个名为`configuration_hash`的哈希表中,它位于`php_ini.c`文件中。这个哈希表使得快速查找和访问配置选项成为可能。 值得注意的是,一旦`php_module_startup`函数执行完毕,PHP就已经初始化完成,准备处理请求。在这个函数中,`php_init_config`是解析`php.ini`文件的关键步骤,它将配置文件的文本内容转化为内部可操作的数据结构。这个过程包括词法分析和语法解析,确保ini文件的格式正确。 在PHP运行时,如果需要动态修改配置,可以使用`ini_set`函数。`ini_set`允许在代码中临时改变配置选项,但它的影响仅限于当前脚本执行的上下文。这意味着,当脚本执行结束,由`ini_set`设置的配置将失效,恢复到`php.ini`文件中的初始设定。因此,若需永久更改配置,必须编辑`php.ini`文件或重启服务器以应用新设置。 此外,`php.ini`的配置不仅局限于简单的键值对,还可以处理数组类型的设置。例如,连续几行配置`drift.arr[] = 1`、`drift.arr[] = 2`、`drift.arr[] = 3`,会在`configuration_hash`中创建一个键为`drift.arr`的数组值,包含了1、2和3这三个元素。 PHP还提供了如`EG(ini_directives)`这样的数据结构,用于存储运行时配置信息。EG(Engine Globals)是PHP引擎全局变量的集合,而`ini_directives`则记录了当前环境下的配置指令。此外,还有一些以`_G`结尾的全局变量,如`PG`、`BG`、`PCRE_G`、`JSON_G`、`XXX_G`等,它们分别代表不同的全局变量集合,服务于特定的扩展或功能。 总结来说,`php.ini`配置文件是PHP运行时配置的核心,`php_init_config`函数负责解析ini文件并将配置信息存储在`configuration_hash`中。在脚本执行过程中,`ini_set`提供了一种临时调整配置的方法,但其影响仅限于当前脚本。理解这些原理对于管理和优化PHP应用程序的性能、安全性和行为至关重要。
剩余6页未读,继续阅读
- 粉丝: 4
- 资源: 923
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AllSort(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序)
- 模拟qsort,改造冒泡排序使其能排序任意数据类型,即日常练习
- 数组经典习题之顺序排序和二分查找和冒泡排序
- 基于 Oops Framework 提供的游戏项目开发模板,项目中提供了最新版本 Cocos Creator 3.x 插件与游戏资源初始化通用逻辑
- live-ai这是一个深度学习的资料
- FeiQ.rar 局域网内通信服务软件
- 172.16.100.195
- 光储并网simulink仿真模型,直流微电网 光伏系统采用扰动观察法是实现mppt控制,储能可由单独蓄电池构成,也可由蓄电池和超级电容构成的混合储能系统,并采用lpf进行功率分配 并网采用pq控制
- python编写微信读取smart200plc的数据发送给微信联系人
- 光储并网VSG系统Matlab simulink仿真模型,附参考文献 系统前级直流部分包括光伏阵列、变器、储能系统和双向dcdc变器,后级交流子系统包括逆变器LC滤波器,交流负载 光储并网VSG系