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);
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
ini_get_all — 모든 설정 옵션을 얻습니다
$extension
[, bool $details
]] )등록된 모든 설정 옵션을 반환합니다.
extension
선택적인 확장명. 설정하면, 그 확장에 사용되는 옵션만 반환합니다.
details
자세한 설정을 얻거나 각 설정의 현재 값만 가져옵니다. 기본값은
TRUE
입니다. (자세한 설정)
지시어 이름을 키로 가지는 연관 배열을 반환합니다.
details
가 TRUE
(기본값)이면, 배열은
global_value(php.ini에서 설정),
local_value(ini_set()이나
.htaccess로 설정), access(접근 레벨)를 가지는 배열을
반환합니다.
details
가 FALSE
이면 옵션의 현재 값만 얻습니다.
접근 레벨에 대한 의미는 매뉴얼 섹션을 참고하십시오.
Note:
지시어가 복수의 접근 레벨을 가질 수 있기에, access는 적절한 비트마스트 값을 가집니다.
버전 | 설명 |
---|---|
5.3.0 |
details 추가.
|
Example #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 ) ... )
Example #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 ... )
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);
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.
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;
}
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";
?>
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).