首页 » Web前端 » phpini文件技巧_关于php的ini文件相关操作函数浅析

phpini文件技巧_关于php的ini文件相关操作函数浅析

访客 2024-10-29 0

扫一扫用手机浏览

文章目录 [+]

ini_set('allow_url_fopen',0);echoini_get('allow_url_fopen'),PHP_EOL;//1,无法修正,PHP_INI_SYSTEMini_set('memory_limit',-1);echoini_get('memory_limit'),PHP_EOL;//-1,可以修正,PHP_INI_ALL

请把稳看注释,第一条注释中写了 ,PHP_INI_SYSTEM ,并且这个参数无法修正。
没错,相信聪明的你已经看出来了,这些参数是有对应的类型的。
PHP_INI_SYSTEM 的意思便是只能在 php.ini 或者 httpd.conf 中进行修正,无法在措辞动态运行时修正。

不同的 php.ini 配置参数对应有四种类型:

phpini文件技巧_关于php的ini文件相关操作函数浅析

PHP_INI_USER:可在用户脚本(例如 ini_set())或 Windows 注册表(自 PHP 5.3 起)以及 .user.ini 中设定PHP_INI_PERDIR:可在 php.ini,.htaccess 或 httpd.conf 中设定PHP_INI_SYSTEM:可在 php.ini 或 httpd.conf 中设定PHP_INI_ALL:可在任何地方设定

也便是说,利用 ini_set() 我们可以设定类型为 PHP_INI_USER 和 PHP_INI_ALL 类型的参数,而其它两种只能在 php.ini 或其他配置文件中设置修正。
详细的配置参数对应的类型请参考 PHP 干系文档。

phpini文件技巧_关于php的ini文件相关操作函数浅析
(图片来自网络侵删)

https://www.php.net/manual/zh/ini.list.php

获取ini文件中的配置信息

当然,读取 php.ini 文件中的配置信息就没有什么限定了。
直接就可以读取,我们可以利用两个函数来进行读取,它们是:get_cfg_var() 和 ini_get() 。
其余,还有一个可以获取数组凑集形式的配置信息的函数 ini_get_all() 。
我们一个一个来看。

get_cfg_var() 和 ini_get()

都是读取单个配置参数信息。

echoget_cfg_var('error_reporting'),PHP_EOL;//32759echoini_get('error_reporting'),PHP_EOL;//32759echoget_cfg_var('request_order'),PHP_EOL;//GPechoini_get('request_order'),PHP_EOL;//GP//php.iniA=TEST_Aechoget_cfg_var('A'),PHP_EOL;//TEST_Aechoini_get('A'),PHP_EOL;//

上面两条不用多阐明,我们须要把稳到的是,末了一条。
我们在 php.ini 文件中定义了一个自定义的配置参数 A 。
可以看到,get_cfg_var() 可以正常获取到这条信息,但 ini_get() 无法获取。
我们再看其余一个例子。

ini_set('error_reporting',E_WARNING);echoget_cfg_var('error_reporting'),PHP_EOL;//32759,只返回.ini的内容echoini_get('error_reporting'),PHP_EOL;//2,返回当前配置运行时的状态

利用 ini_set() 动态设置了 error_reporting 参数后,get_cfg_var() 返回是 ini_set() 设置的值,而 ini_get() 获取的依然是 php.ini 文件里面配置的值。

从上面两个例子可以看出这两个函数的差异:

get_cfg_var(),可以获取自定义的配置参数值,但只以 php.ini 文件为准,无法得到动态修正的参数值ini_get(),无法获取自定义的配置参数值,以当前的动态脚本运行时的配置为准,也便是能够获取到 ini_set() 修正后的参数值ini_get_all()

它获取的是一组数据,比如我们安装的一些扩展 Swoole 、 xDebug 或者 mysqlnd 这类的配置信息。

print_r(ini_get_all('swoole'));echoPHP_EOL;//Array//(//[swoole.display_errors]=>Array//(//[global_value]=>On//[local_value]=>On//[access]=>7//)//[swoole.enable_coroutine]=>Array//(//[global_value]=>On//[local_value]=>On//[access]=>7//)//[swoole.enable_library]=>Array//(//[global_value]=>On//[local_value]=>On//[access]=>7//)//[swoole.enable_preemptive_scheduler]=>Array//(//[global_value]=>Off//[local_value]=>Off//[access]=>7//)//[swoole.unixsock_buffer_size]=>Array//(//[global_value]=>262144//[local_value]=>262144//[access]=>7//)//[swoole.use_shortname]=>Array//(//[global_value]=>//[local_value]=>//[access]=>4//)//)

可以看出,我们针对 Swoole 所作的所有配置信息都以数组形式返回了。

还原配置信息

当我们利用了 ini_set() 动态设置了参数信息后,想还原为 php.ini 文件中的默认配置的话,直策应用一个 ini_restore() 函数就可以了。

ini_restore('error_reporting');echoini_get('error_reporting'),PHP_EOL;//32759

依然是沿用上面的代码, error_reporting 已经被我们修正为了 2 ,这时,我们直策应用 ini_restore() 进行了还原,再利用 ini_get() 就可以看到 error_reporting 参数还原回了 php.ini 文件中定义的原始值。

获取当前加载的配置文件路径

当你接手一台做事器的时候,每每第一步便是找到它的干系运用配置文件,比如 mysql 的 my.ini 或者 nginx 的 conf 干系配置文件路径,而 PHP 中我们第一步便是要找到 php.ini 文件在哪里。

echophp_ini_loaded_file(),PHP_EOL;///usr/local/etc/php/7.3/php.iniechophp_ini_scanned_files(),PHP_EOL;

我们直策应用 php_ini_loaded_file() 就可以方便的获取到当前运行的脚本环境中加载的 php.ini 文件的路径。
而 php_ini_scanned_files() 函数则是会以逗号分隔的形式返回所有可以扫描 php.ini 文件的路径。
实在这两个参数在 phpinfo() 中都都有所表示,但很多时候我们并不能直接在生产环境中去利用 phpinfo() 。

实在,相对付这两个函数或 phpinfo() 来说,更好的方案是直接在命令行查找 php.ini 文件的位置。

php--ini#ConfigurationFile(php.ini)Path:/usr/local/etc/php/7.3#LoadedConfigurationFile:/usr/local/etc/php/7.3/php.ini#Scanforadditional.inifilesin:/usr/local/etc/php/7.3/conf.d#Additional.inifilesparsed:/usr/local/etc/php/7.3/conf.d/ext-opcache.iniphp-i|grep"Configuration"#ConfigurationFile(php.ini)Path=>/usr/local/etc/php/7.3#LoadedConfigurationFile=>/usr/local/etc/php/7.3/php.ini#Configurationphpinfo()

关于 phpinfo() ,我们不用阐明太多,里面的内容都有什么该当是学习利用 PHP 的开拓职员的必修课。
在这里,我们只是先容一下 phpinfo() 这个函数的参数。
没错,它是有参数的,可以只显示一部分的信息而不是全部都显示出来。

INFO_GENERAL:配置的命令行、 php.ini 的文件位置、建立的韶光、Web 做事器、系统及更多其他信息。
INFO_CREDITS:PHP 贡献者名单。
参加 phpcredits()。
INFO_CONFIGURATION:当前PHP指令确当地值和主值。
拜会 ini_get()。
INFO_MODULES:已加载的模块和模块相应的设置。
拜会 get_loaded_extensions()。
INFO_ENVIRONMENT:环境变量信息也可以用 $_ENV 获取。
INFO_VARIABLES:显示所有来自 EGPCS (Environment, GET, POST, Cookie, Server) 的 预定义变量。
INFO_LICENSE:PHP容许证信息。
拜会 » license FAQ。
INFO_ALL:显示以上所有信息。

phpinfo(INFO_MODULES);

上面的代码在页面中所显示的信息就只是已加载模式干系的配置信息了。
phpinfo() 会直接输出到页面上,如果想将它的内容保存在一个变量中,我们须要利用输出缓冲掌握来进行操作。
我们将在后面的文章中讲到这方面的内容。
这里就大略的给一段代码。

ob_start();phpinfo();$v=ob_get_contents();ob_end_clean();echo$v;总结

不看不知道,一看吓一跳。
原来只是利用过 ini_set() 去修正运行时内存大小,但直到本日才知道原来 ini_set() 并不是所有的配置都可以修正的,每个参数是否能动态修正还要看它的参数类型。
而且上面还忘了说了,我们并不能利用 ini_set() 去增加配置参数。
也便是说,利用 ini_set("B", "TEST_B") 增加一个 B 参数,然后直策应用 ini_get() 也是无法获取的。
而且大略的获取参数信息的两个函数也有这么多的不同,phpinfo() 原来也有这么多参数。
果真,文档才是最好的学习资料。
旅程还没有停滞,我们刷文档的脚步依然不能停,一起加油冲冲冲!

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202005/source/%E5%85%B3%E4%BA%8Ephp%E7%9A%84ini%E6%96%87%E4%BB%B6%E7%9B%B8%E5%85%B3%E6%93%8D%E4%BD%9C%E5%87%BD%E6%95%B0%E6%B5%85%E6%9E%90.php

参考文档:

https://www.php.net/manual/zh/function.get-cfg-var.php

https://www.php.net/manual/zh/function.ini-set.php

https://www.php.net/manual/zh/function.ini-restore.php

https://www.php.net/manual/zh/function.ini-get.php

https://www.php.net/manual/zh/function.ini-get-all.php

https://www.php.net/manual/zh/function.ini-alter.php

https://www.php.net/manual/zh/function.php-ini-loaded-file.php

https://www.php.net/manual/zh/function.php-ini-scanned-files.php

https://www.php.net/manual/zh/ini.list.php

https://www.php.net/manual/zh/configuration.changes.modes.php

标签:

相关文章

房山第一探寻历史文化名区的魅力与发展

房山区,位于北京市西南部,历史悠久,文化底蕴深厚。作为北京市的一个重要组成部分,房山区的发展始终与首都的发展紧密相连。房山区积极推...

Web前端 2025-02-18 阅读1 评论0

手机话费开钻代码数字时代的便捷生活

我们的生活越来越离不开手机。手机话费作为手机使用过程中的重要组成部分,其充值方式也在不断创新。手机话费开钻代码应运而生,为用户提供...

Web前端 2025-02-18 阅读1 评论0

探寻专业奥秘如何查询自己专业的代码

计算机科学已成为当今社会不可或缺的一部分。掌握一门专业代码对于个人发展具有重要意义。面对繁杂的学科体系,如何查询自己专业的代码成为...

Web前端 2025-02-18 阅读1 评论0