PHP 8.4.2 Released!

ini_get_all

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

ini_get_allОтримує всі параметри конфігурації

Опис

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, значенням масива буде поточне значення параметра.

Прогляньте сторінку Де можна встановлювати параметри, на якій є інформація про рівні доступа (точніше - там вони називаються "режими").

Зауваження:

Директива може мати кілька рівнів доступа, в цьому випадку access буде мати відповідну бітову маску.

Журнал змін

Версія Опис
5.3.0 Додано параметр details.

Приклади

Приклад #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)); // 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
    ...
)

Прогляньте також

add a note

User Contributed Notes 5 notes

up
9
justd@ntmailme
22 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
2
Julien MOREAU aka PixEye
6 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
2
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
-4
peter at peteraba dot com
9 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
-6
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