PHP Velho Oeste 2024

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() игнорирует опции типа "массив" такие как pdo.dsn.*.

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

add a note

User Contributed Notes 5 notes

up
11
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
7 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