PHP 8.1.31 Released!

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

Необязательное название модуля. Функция возвращает информацию об опциях только того модуля, название которого указали, если значение параметра не равно null или строке (string) core.

details

Возвращать для каждого параметра подробную информацию или только текущее значение. Значение по умолчанию равно true: возвращать подробные сведения.

Возвращаемые значения

Функция возвращает ассоциативный массив с именами директив в качестве ключей. Функция возвращает false и вызывает ошибку уровня E_WARNING, если модуль extension не существует.

Если параметр details равен значению по умолчанию — true, массив будет содержать элемент global_value со значением параметра из файла php.ini, элемент local_value со значением, которое установили, например, через функцию ini_set() или файл .htaccess, и элемент access с уровнем доступа.

Элемент массива будет содержать текущее значение параметра, если значение параметра details равно false.

Смотрите раздел руководства «Места установки параметров конфигурации», который даёт дополнительную информацию о значениях уровней доступа.

Замечание:

У директив бывает больше одного уровня доступа, тогда элемент с ключом 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() игнорирует «массивы» ini-опций наподобие pdo.dsn.*.

Смотрите также

Добавить

Примечания пользователей 5 notes

up
12
justd@ntmailme
21 years ago
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.
up
4
pmdumuid at gmail dot com
8 years ago
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;
}
up
3
Julien MOREAU aka PixEye
5 years ago
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);
up
-3
peter at peteraba dot com
8 years ago
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";
?>
up
-5
root at mantoru dot de
16 years ago
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).
To Top