ini_get_all

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

ini_get_all获取所有配置选项

描述

ini_get_all(?string $extension = null, bool $details = true): array|false

返回所有已注册的配置选项。

参数

extension

可选的扩展名。如果非 nullstring core,则该函数仅返回特定于该扩展的选项。

details

检索详细信息设置或仅检索每个设置的当前值。默认值为 true(检索详细信息)。

返回值

返回一个关联数组,其中指令名称作为数组键。如果 extension 不存在,则返回 false 并引发 E_WARNING 级别的错误。

detailstrue(默认值)时,数组将包含 global_value(在 php.ini 中设置),local_value(可能使用 ini_set().htaccess 设置)和 access(访问级别)。

detailsfalse 时,该值将是选项的当前值。

有关访问级别的含义,请参阅 手册部分

注意:

指令可能具有多个访问级别,这就是 access 显示适当的位掩码值的原因。

示例

示例 #1 ini_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
        )

    ...

)

示例 #2 禁用 details

<?php
print_r
(ini_get_all("pcre", false)); // 在 PHP 5.3.0 中添加
print_r(ini_get_all(null, false)); // 在 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_all() 忽略 "array" ini 选项,例如 pdo.dsn.*

参见

添加注释

用户贡献注释 5 个注释

12
justd@ntmailme
21 年前
我想第三个条目是所需的访问级别(在运行时更改此变量)

常量值含义
PHP_INI_USER 1 条目可以在用户脚本中设置
PHP_INI_PERDIR 2 条目可以在 php.ini、.htaccess 或 httpd.conf 中设置
PHP_INI_SYSTEM 4 条目可以在 php.ini 或 httpd.conf 中设置
PHP_INI_ALL 7 条目可以在任何地方设置

另请参阅 ini_set() 的文档

Hugo。
4
pmdumuid at gmail dot com
8 年前
echo recreate_php_ini();

/**
* 用于重新创建 php ini 配置文件的示例函数。
*
* @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;
}
3
Julien MOREAU aka PixEye
5 年前
如果您想加载和解析自己的 ini 文件,请查看 parse_ini_file() 函数。示例

<?php
// ...
$my_data = parse_ini_file($my_file, true);
-3
peter at peteraba dot com
8 年前
您可以在服务器上使用以下代码段来获取实时/预发布配置,以便能够在您的开发环境中复制它们。(我使用 `php -a` 来完成此操作)
<?php
foreach (ini_get_all(null, false) as $key => $value) echo "$key=$value;\n";
?>
-5
root at mantoru dot de
16 年前
从某个 PHP 版本(我认为是 5.2.5)开始,就不能再覆盖使用 httpd.conf 中的 php_admin_* 设置的 INI 条目。访问级别将被设置为 4(PHP_INI_SYSTEM),这也由此函数返回。

以下提到的常量在 PHP 中可用,但没有前缀(例如 INI_USER、INI_PERDIR)。
To Top