PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ini_restore> <ini_get_all
Last updated: Tue, 27 Nov 2007

view this page in

ini_get

(PHP 4, PHP 5)

ini_get — Obtiene el valor de una opción de configuración

Descripción

string ini_get ( string $nombre_var )

Devuelve el valor de la opción de configuración en caso de éxito.

Lista de parámetros

nombre_var

El nombre de la opción de configuración.

Valores retornados

Devuelve el valor de la opción de configuración como una cadena en caso de éxito, o una cadena vacía en caso de fallo o para valores NULL.

Ejemplos

Example#1 Algunos ejemplos de ini_get()

<?php
/*
Nuestro php.ini contiene los siguientes parámetros:

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 en bytes = ' return_bytes(ini_get('post_max_size'));

function 
return_bytes($val) {
    
$val trim($val);
    
$ultimo strtolower($val{strlen($val)-1});
    switch(
$ultimo) {
        
// El modificador 'G' se encuentra disponible desde PHP 5.1.0
        
case 'g':
            
$val *= 1024;
        case 
'm':
            
$val *= 1024;
        case 
'k':
            
$val *= 1024;
    }

    return 
$val;
}

?>

El resultado del ejemplo seria algo similar a:


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

Notes

Note: Cuando se consultan valores booleanos Un valor ini booleano de off será devuelto como una cadena vacía o "0", mientras que un valor ini booleano de on será devuelto como "1". La función puede devolver también la cadena literal del valor INI.

Note: Cuando se consultan valores de tamaño de memoria Muchos valores ini de tamaño de memoria, como upload_max_filesize son almacenados en el archivo php.ini en notación abreviada. ini_get() devolverá la cadena exacta almacenada en el archivo php.ini y NO su equivalente integer. Usar funciones aritméticas normales sobre estos valores no tendrían los resultados que de otra forma podrían esperarse. El ejemplo anterior muestra una manera de convertir la notación corta de bytes, de forma similar al modo que lo hace el código fuente de PHP.



ini_restore> <ini_get_all
Last updated: Tue, 27 Nov 2007
 
add a note add a note User Contributed Notes
ini_get
khkjr at exple dot com
08-Oct-2007 04:43
This freakin conversion to bytes function does not work, nor does this one: ben at qolc dot net 22-Feb-2007 04:20
donations at bilawal dot co dot uk
30-Apr-2007 09:59
true, I'd use

<?php
$target
="FUNC"; //INI_GET Target Function
if(!function_exists('ini_get'))
{
ini_get($target) or exit("Cannot collect ini_get() function");
}
?>
ben at qolc dot net
22-Feb-2007 04:20
Re Webmaster at Grimchild's code

As petrov says, grimchild's code doesn't "parse" the value, it just throws away the most significant part of it. Out of there you'll get a number but won't know whether it's bytes, kilobytes, megabytes or gigabytes!

To parse the value you have to split off the character (if present) and multiply the number appropriately. Trivially:

<?php
$pms
= ini_get('post_max_size');
if (
preg_match('/^([\d\.]+)([gmk])?$/i', $pms, $m)) {
 
$value = $m[1];
  if (isset(
$m[2])) {
    switch(
strtolower($m[2])) {
      case
'g': $value *= 1024# fallthrough
     
case 'm': $value *= 1024# fallthrough
     
case 'k': $value *= 1024; break;
      default: die(
"Can't parse value '$pms' ");
    }
  }
  print
"$value bytes\n";
} else {
  die(
"Can't parse value '$pms' ");
}
?>

Note the cunning or horrible (depending on your viewpoint) use of fallthrough between cases in the switch statement, so that for example 'g' gets multiplied by 1024 three times. If you ever write code which intentionally uses switch fallthrough like the above, be a good boy/girl and comment it, else someday it will come and bite you or your unfortunate cow-orkers.

It wouldn't surprise me if there's a PHP function to parse human-format sizes like this already (given that PHP itself has to do it).
petrov dot michael at gmail dot com
25-Sep-2006 09:40
@Webmaster at GrimChild dot com

Your suggestion to simply strip the [gmk] letters would actually be very unpredictable since you no longer know the magnitude of the number. Therefore if you have 8K and 8M they would be both equal after your function. Also the following would be incorrect:

<?php
// Incorrect code
function parse_size($size) {
    return
eregi_replace('[gmk]','',$size);
}

//Check that we have at least 4M of post space
//      assume post_max_size = 16K
if(parse_size(ini_get('post_max_size')) < parse_size("4M")) {
      die(
'Error: this script requires more than 4M of post space');
}
?>

As you can see in this scenario the functions would return 16 and 4 respectively, allowing the check to succeed with less memory than 4M.
Webmaster at GrimChild dot com
20-May-2006 09:34
Just thought I would add.

Very simple way of parsing data such as post_max_size

eregi_replace('[gmk]','',ini_get('post_max_size'));
filh at filh dot org
21-Nov-2005 04:24
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.
09-Nov-2005 11:56
@marcus at synchromedia dot co dot uk

you misunderstood the comment. Of course you can use on and off, and they will work correctly.
But this entry is about *ini_get*. And if you ini_get() a value that is set to "off" in php.ini, you get returned 0 (as described above in the documentation). If you ini_get() a value that is set to "off" via .htaccess, you will be returned the string "off", which - if you use it in an if-clause, will be autoconverted to 1 (as is usual for strings).

So the problem is that which is returned by ini_get(), not what you can and cannot use in .htaccess. Sorry being unclear about this.
marcus at synchromedia dot co dot uk
05-Nov-2005 11:21
The last comment about setting values in .htaccess is not right. These lines both result in display_errors being turned off:

php_value display_errors true
php_value display_errors off

So PHP does NOT coerce the value into a boolean, but it checks for exact values of the string. These both work:

php_value display_errors on
php_value display_errors 1
01-Nov-2005 09:16
Important: The manual says that ini_get will return 0 or an empty string for boolean config values that are set to off in php.ini.

This is technically correct, however when you use

php_value register_globals off

in an .htaccess file, ini_get will return the string, which will "evaluate" to 1. So if you are using mod_php you have to check boolean config values against the strings (upper/lowercase etc.) anyhow or you will get wrong results.
david dot tulloh at infaze dot com dot au
22-Jun-2005 05:01
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.
Der Graph
16-Aug-2004 09:59
It might be useful for included scripts that include other files to extend the 'include_path' variable:

<?  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'.
fbeyer at <nospam>clickhand dot de
13-Aug-2002 05:29
If you want to test ini flags (eg. On/Off), I recommend to explicitly cast the value returned by ini_get() to boolean - it is cleaner as you only get true or false, not 0 or 1 or "" as described above.

<?php
    $register_globals
= (bool) ini_get('register_gobals');
?>

C fans may of course also cast it to (int) to play with 0 and 1 - that's also cleaner to print().

ini_restore> <ini_get_all
Last updated: Tue, 27 Nov 2007
 
 
show source | credits | sitemap | contact | advertising | mirror sites