ini_get(_G)

(PHP 4、PHP 5、PHP 7、PHP 8)

ini_get(_G)获取配置选项的值

描述

ini_get(_G)(一串 $选项):一串|

成功时返回配置选项的值。

参数

选项

配置选项名称。

返回值

成功时以字符串形式返回配置选项的值,或的空字符串无效的值。退换商品如果配置选项不存在。

示例

示例#1一些ini_get()示例

<?php(电话)
/*
我们的php.ini包含以下设置:

display_errors=开
register_globals=关闭
最大尺寸=8M
*/

回声'显示错误='ini_get(_I)('显示错误') .“\n”;
回声
'register_globals='ini_get(_G)('注册表_全局') .“\n”;
回声
'post_max_size='ini_get(_G)('帖子最大尺寸') .“\n”;
回声
'post_max_size+1='. (ini_get(_G)('帖子最大尺寸')+1) .“\n”;
回声
'以字节为单位的post_max_size='返回字节(_B)(ini_get(_G)('帖子最大尺寸'));

功能
返回字节(_B)($val美元) {
$val美元=修剪($val美元);
上次$=strtolower公司($val美元[斯特伦($val美元)-1]);
交换机(
上次$) {
//“G”修饰符可用
案例“g”:
$val美元*=1024;
案例
“m”:
$val美元*=1024;
案例
“k”:
$val美元*=1024;
}

返回
$val美元;
}

?>

上述示例将输出类似于:

显示错误=1register_globals=0最大尺寸=8Mpost_max_size+1=9post_max_size(字节)=8388608

笔记

注释:查询布尔值时

布尔ini值远离的将作为空字符串或“0”,而布尔ini值为返回为“1”。该函数还可以返回INI值的文本字符串。

注释:查询内存大小值时

许多ini内存大小值,例如上传最大文件大小,是存储在php.ini公司以速记符号表示的文件。ini_get()将返回存储在php.ini公司文件和不是它的整数等效。尝试对这些值执行普通算术函数不会有其他预期的结果。上面的示例显示了一个将速记符号转换为字节的方法,很像PHPsource做到了。

注释:

ini_get()无法读取“数组”ini选项,例如pdo.dsn.*,并返回在这种情况下。

另请参见

添加注释

用户贡献的笔记12条注释

斯塔斯·特雷菲洛夫,OpteamIS
14年前
return_bytes的另一个版本,返回速度更快,不使用多次乘法运算(对不起:)。即使在编译时解决了这个问题,这也不是一个好做法;
未分配局部变量;
trim()被省略(php在读取php.ini文件时已经修剪了值);
strtollower()被第二个案例所取代,这为我们赢得了一个又一个函数调用,代价是要处理的案例数量增加一倍(在默认情况下,可能会减缓最坏的情况:需要六次比较,而不是三次比较和一次函数调用);
案例按最频繁的优先顺序排序(大写的M值是默认大小);
规范说我们必须处理整数大小,所以浮点值被转换为整数,0.8G变为0;
“Gb”、“Mb”、“Kb”速记字节选项未实现,因为不在规范中,请参阅
http://www.php.net/manual/en/faq.using.php#faq.using.shorthandbytes(网址:http://www.php.net/manual/en/faq.using.php#faq.using.shorthandbytes)

<?php(电话)
功能返回字节(_B)($大小_str)
{
交换机(
子(substr)($大小_str, -1))
{
案例
“M”:大小写“m”:return(int)$大小_str*1048576;
案例
“K”:大小写“k”:return(int)$大小_str*1024;
案例
“G”:大小写“g”:return(int)$大小_str*1073741824;
默认值:return
$大小_str;
}
}
?>
IceNV公司
6年前
请注意,XDebug可以更改max_execution_time。

在本地调试使用<?php ini_get(_G)('最大执行时间');?>当启用XDebug远程调试且IDE正在侦听时,它返回0。

这很有道理,因为手动调试需要时间,所以我们不希望脚本超时;但在这种特殊情况下,它使脚本看起来像maxexecutiontime是0,所以计算是错误的。

您可以在phpinfo()中看到,在这种情况下,本地值为0,但主值是您在php.ini中设置的正确值。
devsrealmGuy公司
2年前
下面是使用PHP8获得字节结果的另一种方法

<?php(电话)

/**
*@param字符串$size
*@return整数
*@author DevsrealmGuy
*/
公共职能字节数组(字符串$大小):整数
{
$大小=修剪($大小);

#
#将值与度量值分开(即MB、GB、KB)
#
预匹配(_M)('([0-9]+)[\s]*([a-zA-Z]+)/'$大小$个匹配项);

美元价值=(isset($个匹配项[1])) ?$个匹配项[1] :0;
$公制=(isset($个匹配项[2])) ?strtolower公司($个匹配项[2])以下为:“b”;

#
#$value乘以匹配大小写的结果
#注:(1024**2)与(1024*1024)或pow(1024,2)相同
#
美元价值*=匹配($公制) {
“k”“kb”=>1024
“m”“mb”=> (1024**2),
“g”“gb”=> (1024**),
“t”“tb”=> (1024**4),
默认值=>
0
};

返回(int)
美元价值;
}

#
#TEST:如果不符合匹配标准,则默认为0
#
回声字节数组(“2GB”) .“</br>”;
#输出:2147483648
回声字节数组(“4tb”) .“</br>”;
#输出:439804651104
回声字节数组(“5345etrgrfd”) .“</br>”;
#输出:0
回声字节数组('357568336586') .“</br>”;
#输出:0
?>
filh在filh-dot org
18年前
关于返回的值,这取决于您如何设置它。
我遇到了测试safe_mode值的horde-3的问题。
THan公司:
-如果使用php_admin_value safe_mode Off(或On)设置值,ini_get将返回字符串
-如果使用php_admin_flag safe_mode Off(或On)设置值,ini_get将返回布尔值。
伊沃·曼德尔斯基
12年前
这个版本的return_bytes处理MB、GB、KB以及M、G、K的情况。
希望这有帮助!

<?php(电话)
公共静态函数返回字节(_B)($val美元)
{
if(空(
$val美元))返回0;

$val美元=修剪($val美元);

预匹配(_M)('#([0-9]+)[\s]*([a-z]+)#i'$val美元$个匹配项);

上次$='';
如果(isset(
$个匹配项[2])){
上次$=$个匹配项[2];
}

如果(isset(
$个匹配项[1])){
$val美元=(整数)$个匹配项[1];
}

交换机(
strtolower公司(上次$))
{
案例
“g”:
案例
“gb”:
$val美元*=1024;
案例
“m”:
案例
“mb”:
$val美元*=1024;
案例
“k”:
案例
“kb”:
$val美元*=1024;
}

返回(int)
$val美元;
}
?>
bishop@php
8年前
return_bytes的另一个实现:

<?php(电话)
功能返回字节(_B)($val美元)
{
断言('1===preg_match(“/^\d+([kmg])?$/i”,$val)');
静止的
$地图=数组(“k”=>1024“m”=>1048576“g”=>1073741824);
返回(int)
$val美元* @($地图[strtolower公司(子(substr)($val美元, -1))] ?:1);
}
?>

如果使用的是PHP>=7,可以替换?:用??避免使用@消音器。
彼得
15年前
上面的示例函数return_bytes()假设ini_get('upload_max_filesize')只在末尾传递一个字母。正如我看到的“Mb”和类似的东西,我建议更改$last=。。。part into$last=strtollower(子项($val,strlen($val/1),1))。
那我就叫它$unit。
david dot tulloh在infaze dot com dot au
18年前
您可以在ini文件中设置自定义条目,以提供全局信息,如数据库详细信息。
然而,这些必须使用get_cfg_var检索,ini_get无法工作。
nicolas dot grekas+gmail dot com上的php
14年前
以下是如何准确测试布尔php.ini值:

<?php(电话)

功能ini获取工具(美元)
{
十亿美元=ini_get(_G)(美元);

交换机(
strtolower公司(十亿美元))
{
案例
“打开”:
案例
“是”:
案例
“真实”:
返回
“assert.active”==美元;

案例
“标准输出”:
案例
“标准错误”:
返回
'显示错误'===美元;

违约:
return(布尔)(int)
十亿美元;
}
}

?>
乔·胡斯被羁押在服务器间网络
2年前
下面是一个结合了一些示例的版本,它不需要php8也不生成警告

/**
*获取从人类可读字符串(如10G)转换的字节值
*
*@param混合了$val值的人类可读/速记版本
*@return int转换为字节的值
*/
函数return_bytes($val){
$val=修剪($val);
preg_match('/([0-9]+)[\s]*([a-zA-Z]+)/',$val,$matches);
$value=(isset($matches[1]))?intval($matches[1]):0;
$metric=(isset($matches[2]))?strtollower($matches[2]):“b”;
交换机($公制){
案例“tb”:
案例't':
$值*=1024;
案例“gb”:
案例“g”:
$值*=1024;
案例“mb”:
案例'm':
$值*=1024;
大小写“kb”:
大小写“k”:
$值*=1024;
}
返回$value;
}
Der图
19年前
对于包含其他文件的包含脚本,扩展“include_path”变量可能很有用:

<?php ini设置('包含路径'ini_get(_G)('包含路径').':../包括:');?>

有时,将当前的“include_path”存储在变量中,覆盖它、包含它,然后恢复旧的“inclade_path”可能也很有用。
php-dot-net上的bishop
8年前
类似地,将标志转换为布尔值:

<?php(电话)
功能返回_刀具($val美元)
{
静止的
$地图=数组(“打开”=>真的“真实”=>真的“关闭”=>“false”=>);
返回@(
$地图[strtolower公司($val美元)] ?: (布尔)$val美元);
}
?>

如果使用的是PHP>=7,请考虑替换?:用??并拆除@消音器。
到顶部