ini_get_all()
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
获取所有配置选项
说明
ini_get_all([string $extension[,bool $details= true]]): array
获取所有已注册的配置选项
参数
- $extension
可选的扩展名称。如果设置了,此函数仅仅返回指定该扩展的选项。
- $details
获取详细设置或者仅仅是每个设置的当前值。默认是
TRUE
(获取详细信息)。
返回值
返回一个关联数组,指令名称是数组的键。
当$details为TRUE
(默认),数组会包含global_value(php.ini中的设置)、local_value(可能是ini_set()或.htaccess中的设置)以及access(访问级别)。
当$details为FALSE
,这个值会是选项的当前值。
参见手册章节中访问级别含义的信息。
Note:指令可以有多个访问级别,这也是为什么access会显示适当的位掩码。
注释
Note:ini_get_all()忽略"array"的 ini 选项,例如 pdo.dsn.*。
更新日志
版本 | 说明 |
---|---|
5.3.0 | 增加参数$details。 |
范例
Example #1ini_get_all()例子
<?php print_r(ini_get_all("pcre")); print_r(ini_get_all()); ?>
以上例程的输出类似于:
Array ( [pcre.backtrack_limit] => Array ( [global_value] => 100000 [local_value] => 100000 [access] => 7 ) [pcre.recursion_limit] => Array ( [global_value] => 100000 [local_value] => 100000 [access] => 7 ) ) Array ( [allow_call_time_pass_reference] => Array ( [global_value] => 0 [local_value] => 0 [access] => 6 ) [allow_url_fopen] => Array ( [global_value] => 1 [local_value] => 1 [access] => 4 ) ... )
禁用$details
<?php print_r(ini_get_all("pcre", false)); // Added in PHP 5.3.0 print_r(ini_get_all(null, false)); // Added in PHP 5.3.0 ?>
以上例程的输出类似于:
Array ( [pcre.backtrack_limit] => 100000 [pcre.recursion_limit] => 100000 ) Array ( [allow_call_time_pass_reference] => 0 [allow_url_fopen] => 1 ... )
参见
- 怎样修改配置设定
ini_get()
获取一个配置选项的值ini_restore()
恢复配置选项的值ini_set()
为一个配置选项设置值get_loaded_extensions()
返回所有编译并加载模块名的 arrayphpinfo()
输出关于 PHP 配置的信息- ReflectionExtension::getINIEntries() 获取ini配置
I guess the third entry is the required access level (to change this variable at runtime): Constant Value Meaning PHP_INI_USER 1 Entry can be set in user scripts PHP_INI_PERDIR 2 Entry can be set in php.ini, .htaccess or httpd.conf PHP_INI_SYSTEM 4 Entry can be set in php.ini or httpd.conf PHP_INI_ALL 7 Entry can be set anywhere See also the docs for ini_set() Hugo.
echo recreate_php_ini(); /** * Sample function to re-create a php ini config file. * * @return string */ function recreate_php_ini() { $a = ini_get_all(); $data = []; foreach (array_keys($a) as $k) { $ss = split("\.", $k); if (count($ss) == 1) { $sec = "PHP"; $v = $k; } else { $sec = $ss[0]; $v = $ss[1]; } $data[$sec][$v] = $a[$k]['global_value']; } ksort($data); $out = ""; foreach ($data as $sec => $data) { $out .= "[$sec]\n"; ksort($data); foreach ($data as $k => $v) { if (is_numeric($v)) { $out .= sprintf("%-40s = %s\n", $k, $v); } else { $out .= sprintf("%-40s = \"%s\"\n", $k, $v); } } $out .= "\n"; } return $out; }
If you want to load and parse your own ini file, have a look at parse_ini_file() function. Example: <?php // ... $my_data = parse_ini_file($my_file, true);
You can use the following snippet on servers to grab the live/staging configs in order to be able to replicate those in your development environment. (I use `php -a` for this) <?php foreach (ini_get_all(null, false) as $key => $value) echo "$key=$value;\n"; ?>
Since a certain PHP version (I think it's 5.2.5) it is no longer possible to override INI entrys set with php_admin_* in httpd.conf. The access level will be set to 4 (PHP_INI_SYSTEM), which is also returned by this function. The constants mentioned below are available in PHP, but without the prefix (e.g. INI_USER, INI_PERDIR).