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 — Lit toutes les valeurs de configuration
$extension
= null
, bool $details
= true
): array|falseRetourne toutes les valeurs de configuration.
extension
Un nom d'extension, optionnel. Si non-null
ou différent de la chaîne de caractères
core
, cette fonction retournera uniquement les
options spécifiques à cette extension.
details
Récupère les détails, ou uniquement la valeur courante de chaque
configuration. Par défaut, vaut true
(récupère les détails).
Retourne un tableau associatif dont les clés sont les noms des
directives.
Retourne false
et lève une erreur de niveau E_WARNING
si l'extension
n'existe pas.
Lorsque le paramètre details
vaut true
(défaut),
le tableau contiendra les valeurs global_value
(définies dans
le fichier php.ini), local_value
(définie éventuellement
avec la fonction ini_set() ou via un .htaccess), et
access
(le degré d'accès).
Lorsque le paramètre details
vaut false
, la valeur
sera la valeur courant de l'option.
Voir le manuel pour plus d'informations sur la signification du degré d'accès.
Note:
Il est possible pour une directive d'avoir plusieurs degrés d'accès, et c'est la raison pour laquelle
access
montre les valeurs du masque appropriées.
Exemple #1 Exemple avec ini_get_all()
<?php
print_r(ini_get_all("pcre"));
print_r(ini_get_all());
?>
Résultat de l'exemple ci-dessus est similaire à :
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 ) ... )
Exemple #2 Désactive le paramètre details
<?php
print_r(ini_get_all("pcre", false)); // Ajouté en PHP 5.3.0
print_r(ini_get_all(null, false)); // Ajouté en PHP 5.3.0
?>
Résultat de l'exemple ci-dessus est similaire à :
Array ( [pcre.backtrack_limit] => 100000 [pcre.recursion_limit] => 100000 ) Array ( [allow_call_time_pass_reference] => 0 [allow_url_fopen] => 1 ... )
Note:
ini_get_all() ignore les options ini "array" telles que pdo.dsn.*.
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).