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.
ini_get
(PHP 4, PHP 5)
ini_get — Obtiene el valor de una opción de configuración
Descripción
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_get
30-Jul-2008 12:25
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.
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.
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.
16-Aug-2004 09:59
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'.
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().
