PHP 5.4.31 Released

ini_get

(PHP 4, PHP 5)

ini_getDevuelve el valor de una directiva de configuración

Descripción

string ini_get ( string $varname )

En caso de éxito devuelve el valor de una directiva de configuración.

Parámetros

varname

Nombre de la directiva de configuración.

Valores devueltos

Devuelve el valor de la opción de configuración como cadena en caso de éxito, o una cadena vacía para valores null. Devuelve FALSE si la opción de configuración no existe.

Ejemplos

Ejemplo #1 Unos cuantos ejemplos de la función ini_get()

<?php
/*
Dentro del php.ini tenemos las siguientes directivas junto con sus valores iniciales:

display_errors = On
register_globals = Off
post_max_size = 8M
*/

echo 'display_errors = ' ini_get('display_errors') . "\n";
echo 
'register_globals = ' ini_get('register_globals') . "\n";
echo 
'post_max_size = ' ini_get('post_max_size') . "\n";
echo 
'post_max_size+1 = ' . (ini_get('post_max_size')+1) . "\n";
echo 
'post_max_size in bytes = ' return_bytes(ini_get('post_max_size'));

function 
return_bytes($val) {
    
$val trim($val);
    
$last strtolower($val[strlen($val)-1]);
    switch(
$last) {
        
// El modificador 'G' está disponble desde PHP 5.1.0
        
case 'g':
            
$val *= 1024;
        case 
'm':
            
$val *= 1024;
        case 
'k':
            
$val *= 1024;
    }

    return 
$val;
}

?>

El resultado del ejemplo sería algo similar a:


display_errors = 1
register_globals = 0
post_max_size = 8M
post_max_size+1 = 9
post_max_size in bytes = 8388608

Notas

Nota: Cuando se consultan valores booleanos

El valor booleano off será devuelto como una cadena vacía o "0", mientras que el valor booleano on será devuelto será devuelto como "1". Esta función también puede devolver valores iniciales como cadenas.

Nota: Cuando se consultan valores de tamaños de memoria

Muchos valores iniciales de tamaños de memoria, tales como upload_max_filesize, están almacenados en el fichero php.ini en notación abreviada. ini_get() devolverá la cadena exacta almacenada en el fichero php.ini y NO su valor de tipo integer equivalente. Utilizar estos valores en funciones aritméticas puede provocar resultados inesperados. El ejemplo anterior muestra una manera de convertir la notación abreviada a bytes, muy similar a cómo lo hace el código fuente de PHP.

Historial de cambios

Versión Descripción
5.3.0 Anteriormente, se devolvía un string si la opción de configuración no existía. Ahora en su lugar se devuelve FALSE.

Ver también

  • get_cfg_var() - Obtiene el valor de una opción de configuración de PHP
  • ini_get_all() - Obtiene todas las opciones de configuración
  • ini_restore() - Restablece el valor de una opción de configuración
  • ini_set() - Establece el valor de una directiva de configuración

add a note add a note

User Contributed Notes 7 notes

up
8
Stas Trefilov, OpteamIS
4 years ago
another version of return_bytes which returns faster and does not use multiple multiplications (sorry:). even if it is resolved at compile time it is not a good practice;
no local variables are allocated;
the trim() is omitted (php already trimmed values when reading php.ini file);
strtolower() is replaced by second case which wins us one more function call for the price of doubling the number of cases to process (may slower the worst-case scenario when ariving to default: takes six comparisons instead of three comparisons and a function call);
cases are ordered by most frequent goes first (uppercase M-values being the default sizes);
specs say we must handle integer sizes so float values are converted to integers and 0.8G becomes 0;
'Gb', 'Mb', 'Kb' shorthand byte options are not implemented since are not in specs, see
http://www.php.net/manual/en/faq.using.php#faq.using.shorthandbytes

<?php
function return_bytes ($size_str)
{
    switch (
substr ($size_str, -1))
    {
        case
'M': case 'm': return (int)$size_str * 1048576;
        case
'K': case 'k': return (int)$size_str * 1024;
        case
'G': case 'g': return (int)$size_str * 1073741824;
        default: return
$size_str;
    }
}
?>
up
2
Ivo Mandalski
2 years ago
This version of return_bytes takes care of the MB, GB, KB cases along with the M,G,K ones.
Hope this is helpful!

<?php
   
public static function return_bytes ($val)
    {
        if(empty(
$val))return 0;

       
$val = trim($val);

       
preg_match('#([0-9]+)[\s]*([a-z]+)#i', $val, $matches);

       
$last = '';
        if(isset(
$matches[2])){
           
$last = $matches[2];
        }

        if(isset(
$matches[1])){
           
$val = (int) $matches[1];
        }

        switch (
strtolower($last))
        {
            case
'g':
            case
'gb':
               
$val *= 1024;
            case
'm':
            case
'mb':
               
$val *= 1024;
            case
'k':
            case
'kb':
               
$val *= 1024;
        }

        return (int)
$val;
    }
?>
up
1
filh at filh dot org
8 years ago
Concerning the value retourned, it depends on how you set it.
I had the problem with horde-3 which test the safe_mode value.
THan :
- if you set the value with php_admin_value safe_mode Off (or On) ini_get returns the string
- if you set the value with php_admin_flag safe_mode Off (or On) ini_get returns the boolean.
up
1
Der Graph
9 years ago
It might be useful for included scripts that include other files to extend the 'include_path' variable:

<?php ini_set('include_path',ini_get('include_path').':../includes:');  ?>

Sometimes, it may also be useful to store the current 'include_path' in a variable, overwrite it, include, and then restore the old 'include_path'.
up
2
peter
5 years ago
The above example function called return_bytes() assumes that ini_get('upload_max_filesize') delivers only one letter at the end. As I've seen 'Mb' and things like that, I'd suggest to change the $last = ... part into $last = strtolower(substr($val,strlen($val/1),1)).
I'd call it $unit then.
up
0
david dot tulloh at infaze dot com dot au
9 years ago
You can set custom entries in the ini file to provide globals such as database details.
However these must be retrieved with get_cfg_var, ini_get won't work.
up
-2
nicolas dot grekas+php at gmail dot com
4 years ago
Here is how to accurately test for boolean php.ini values:

<?php

function ini_get_bool($a)
{
   
$b = ini_get($a);

    switch (
strtolower($b))
    {
    case
'on':
    case
'yes':
    case
'true':
        return
'assert.active' !== $a;

    case
'stdout':
    case
'stderr':
        return
'display_errors' === $a;

    default:
        return (bool) (int)
$b;
    }
}

?>
To Top