ini_get_all
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
ini_get_all — Получение всех настроек конфигурации
Описание
$extension
[, bool $details
= true
]] )Возвращает все зарегистрированные настройки конфигурации.
Список параметров
-
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)); // Добавлено в 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() - Получает значение настройки конфигурации
- ini_restore() - Восстанавливает значение настройки конфигурации
- ini_set() - Установка значения настройки конфигурации
- get_loaded_extensions() - Возвращает массив имен всех скомпилированных и загруженных модулей
- phpinfo() - Выводит информацию о текущей конфигурации PHP
- ReflectionExtension::getINIEntries() - Получение ini-настроек расширения
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Изменение поведения PHP
- PHP Опции и Информация
- assert_options
- assert
- cli_get_process_title
- cli_set_process_title
- dl
- extension_loaded
- gc_collect_cycles
- gc_disable
- gc_enable
- gc_enabled
- gc_mem_caches
- get_cfg_var
- get_current_user
- get_defined_constants
- get_extension_funcs
- get_include_path
- get_included_files
- get_loaded_extensions
- get_magic_quotes_gpc
- get_magic_quotes_runtime
- get_required_files
- get_resources
- getenv
- getlastmod
- getmygid
- getmyinode
- getmypid
- getmyuid
- getopt
- getrusage
- ini_alter
- ini_get_all
- ini_get
- ini_restore
- ini_set
- magic_quotes_runtime
- main
- memory_get_peak_usage
- memory_get_usage
- php_ini_loaded_file
- php_ini_scanned_files
- php_logo_guid
- php_sapi_name
- php_uname
- phpcredits
- phpinfo
- phpversion
- putenv
- restore_include_path
- set_include_path
- set_magic_quotes_runtime
- set_time_limit
- sys_get_temp_dir
- version_compare
- zend_logo_guid
- zend_thread_id
- zend_version
Коментарии
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.
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).
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";
?>
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);