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, PHP 8)
ini_get_all — Obtiene todas las opciones de configuración
$extension
= ?, bool $details
= true): arrayDevuelve todas las opciones de configuración registradas.
extension
Un nombre de extensión opcional. Si se establece, la función de retornará únicamente opciones específicas para esa extensión.
details
Recupera los detalles de configuración o sólo el valor actual de cada configuración.
Por omisión es true
(recuperar detalles).
Devuelve un array asociativo con el nombre de la directiva como la clave del array.
Cuando el parámetro details
es true
(por omisión) el array
contendrá global_value
(establecido en php.ini), local_value
(tal vez establecido con ini_set() o .htaccess), y access
(el nivel de acceso).
Cuando el parámetro details
es false
el valor será el
valor actual de la opción.
Vea la sección del manual para obtener información sobre lo que significan los niveles de acceso.
Nota:
Es posible que una directiva tenga múltiples niveles de acceso, por lo que el
access
muestra los valores de máscara de bits adecuado.
Nota:
ini_get_all() ignora las opciones ini de "array" como pdo.dsn.*.
Versión | Descripción |
---|---|
5.3.0 |
Se añadió details .
|
Ejemplo #1 ini_get_all() ejemplos
<?php
print_r(ini_get_all("pcre"));
print_r(ini_get_all());
?>
El resultado del ejemplo sería algo similar a:
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 ) ... )
Ejemplo #2 Disabling details
<?php
print_r(ini_get_all("pcre", false)); // Se añadió en PHP 5.3.0
print_r(ini_get_all(null, false)); // Se añadió en PHP 5.3.0
?>
El resultado del ejemplo sería algo similar a:
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).