php ini_get函数使用方法详解

 更新时间:2016年11月25日 16:46  点击:1820
ini_get函数是获取php中环境变量的值了,当然ini_get能获取到的是要我们php中允许它获取它才可以获取,否则是无法获取到的哦,ini_get只是获取环境变量值它并不能修改环境变量值哦


例如:php.ini文件中包含了以下的设置:

 代码如下 复制代码

register_globals = Off

post_max_size = 8M

PHP部分我们可以这样获取:

 

 代码如下 复制代码
<?php
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'));
?>

如果想获取整个php.ini里的变量值,我们可以用ini_get的加强函数 ini_get_all()

ini_get_all()函数以数组的形式返回整个php的环境变量


当然如果你只是想了解下php的配置信息用
<?php
phpinfo();
?>

接着向下看

php手册中有一个例子

 

 代码如下 复制代码
<?php
/* 
Our php.ini contains the
following settings: 
 
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”; 
?>

输出:

display_errors = 1
register_globals = 0
post_max_size = 8M
post_max_size+1 = 9

PHP配置函数ini_get()主要是为了获取配置文件,可以方便你很多操作。比如你想操作字符串过滤,但是又不清楚magic_quotes_gpc有没有打开,所以你就可以这样写一个函数:

 代码如下 复制代码

/* 字符串过滤函数 */ 

function stringFilter($str) 

if (ini_get(’magic_quotes_gpc)’)

return $str; 
}
else { 
return addslashes($str); 

}

当然,如果你无法知道你的全局变量是否打开,也可以定制这样的函数:
/* 变量检测函数 */ 

 代码如下 复制代码
function getGetVar($var) 

if (ini_set(’register_gobals’))

return $var; 
}
else { 
return $_GET['var']; 

}

当然,你可以用PHP配置函数ini_get()做很多用途,自己慢慢体会。

补充

1.ini_get()获取配置参数,ini_set()设置配置参数

 代码如下 复制代码


<?php
echo ini_get('display_errors'); //1
//动态修改php.ini配置信息,脚本执行后失效
ini_set('display_errors',0);
echo ini_get('display_errors');//0

2.ini_get_all()获取所有配置信息

 代码如下 复制代码


<?php
//打印所有配置信息,巨多。。。
print_r(ini_get_all());

3.ini_restore()恢复配置信息到原始值

 代码如下 复制代码

<?php

echo ini_get('display_errors'); //1
//动态修改php.ini配置信息,脚本执行后失效
ini_set('display_errors',0);
ini_restore('display_errors');
echo ini_get('display_errors');//1

date函数是php中一个非常好用的日期获取函数了,我们可以使用它来获取指定日期或者当前日期了,下面我来简单的介绍一下date函数用法与常用用法吧。

PHP星期几获取代码:

 代码如下 复制代码

date(“l”); //data就可以获取英文的星期比如Sunday
date(“w”); //这个可以获取数字星期比如123,注意0是星期日

获取中文星期几:

 代码如下 复制代码

$weekarray=array(“日”,”一”,”二”,”三”,”四”,”五”,”六”); //先定义一个数组

echo “星期”.$weekarray[date("w")];

获取指定日期是:

 代码如下 复制代码

$weekarray=array(“日”,”一”,”二”,”三”,”四”,”五”,”六”);
echo “星期”.$weekarray[date("w","2011-11-11")];

PHP函数Date()获取当前时间

 代码如下 复制代码

<?php echo $showtime=date("Y-m-d H:i:s");?>

输出当前时间:2008-10-12 02:32:17
怪了,实际时间是:2008-10-12 10:32:17


看看PHP手册的“例子 1. date() 例子”第一行多了一个 时区设置
// 设定要用的默认时区。自 PHP 5.1 可用

 代码如下 复制代码

date_default_timezone_set(UTC);

原来php5.1.开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的,也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和北京时间正好差8个小时。

如何设置可以得到正确的PHP时间?

1、修改php.ini。打开php.ini查找date.timezone 去掉前面的分号= 后面加Asia/Shanghai,重启apache服务器即可--缺点就是如果程序
放到别人的服务器上,不能修改php.ini,那就奈何不得了。
2、在程序中添加时间的初始化的语句的 即:“date_default_timezone_set("Asia/Shanghai"); ”这个可以由程序员任意设置,我的推荐。
时区标识符,大陆内地可用的值是:PRC,Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为中国,重庆,上海,乌鲁木齐) ,Etc/GMT-8,Asia/Harbin
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)还有新加坡:Asia/Singapore
这样就可以实现输出的是北京时间了。

PHP中rename函数在表现上看是用来重命名的,其实我们还可以使用PHP中rename函数来移动文件或文件夹哦,这个下面我们就来给大家介绍一下。


偶然做文件移动的时候总结的一个知识点:刚开始的时候,以为跟上传文件一样可以用move_uploaded_file这个函数去移动一个文件,试了之后发现不行,网上搜了一把,发现可以用rename这个函数来实现文件或文件夹的移动,很奇怪,手册上写的是重名文件或文件夹的,没想到可以用来移动文件

关于函数返回值:

bool rename ( string $oldname , string $newname [, resource $context ] )
尝试把 oldname 重命名为 newname,若操作成功则返回True,失败返回False。


1. 对于文件,rename可以在不同盘符之间移动。
2. 对于空文件夹,rename也可以在不同盘符之间移动。但是目标文件夹的父目录必须存在。
3. 对于非空文件夹,只能在同一盘符下移动。

用法如下:

rename("/tmp/www.txt", "/home/my_file.txt");

第一个参数放原地址,第二个参数放目标地址;

网上还有一种方法是用copy+unlink,不过听说移动的速度不怎样,所以也就不说了,用rename就行,简单、方便、快捷

可能习惯用copy,unlink来实现文件的移动,对于大文件,可能会消耗很长时间,但是经测试发现性能不行。

补充:中文文件及文件夹的问题

我们在使用站长工具会发现有一个获取网站http状态信息了,其实这个功能使用php非常的简单的,我们可以使用curl来实现下面来看一些整理的例子。

使用curl需要在php.ini中设置启用才行 >< Windows的服务器中,打开php.ini,找到:

extension=php_curl.dll

去掉前面的注释既可 。

实现代码如下:

 代码如下 复制代码

$curl = curl_init();
$url=’http://www.111cn.net’;
curl_setopt($curl, CURLOPT_URL, $url); //设置URL
curl_setopt($curl, CURLOPT_HEADER, 1); //获取Header
curl_setopt($curl,CURLOPT_NOBODY,true); //Body就不要了吧,我们只是需要Head
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //数据存到成字符串吧,别给我直接输出到屏幕了
$data = curl_exec($curl); //开始执行啦~
echo curl_getinfo($curl,CURLINFO_HTTP_CODE); //我知道HTTPSTAT码哦~
curl_close($curl); //用完记得关掉他

或者直接使用get_headers函数

get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头

例子

 代码如下 复制代码

<?php
if(!function_exists('get_headers')){
function get_headers($url,$format=0){
$url=parse_url($url);
$end="\r\n\r\n";
$fp=fsockopen($url['host'],(empty($url['port'])?80:$url['port']),$errno,$errstr,30);
if($fp){
$out="GET / HTTP/1.1\r\n";
$out.="Host: ".$url['host']."\r\n";
$out.="Connection: Close\r\n\r\n";
$var='';
fwrite($fp,$out);
while(!feof($fp)){
$var.=fgets($fp,1280);
if(strpos($var,$end))
break;
}
fclose($fp);
$var=preg_replace("/\r\n\r\n.*\$/",'',$var);
$var=explode("\r\n",$var);
if($format){
foreach($var as $i){
if(preg_match('/^([a-zA-Z -]+): +(.*)$/',$i,$parts))
$v[$parts[1]]=$parts[2];
}
return $v;
}else{
    return $var;
   }
}
}
}
echo '<pre>';
print_r(get_headers('http://www.111cn.net'));

文件夹大小统计主要是计算文件夹里面的文件大小然后相加之后再利用函数进行统计了,统计文件大小函数我们使用php filesize函数了,其它的全用目录相关的处理函数,下面一起来看看

计算文件夹的大小,包括子文件夹,格式化输出文件夹大小、文件数、子文件夹数信息。

 代码如下 复制代码

<?
//代码也可以用于统计目录数
//格式化输出目录大小 单位:Bytes,KB,MB,GB
 
function getDirectorySize($path)
{
  $totalsize = 0;
  $totalcount = 0;
  $dircount = 0;
  if ($handle = opendir ($path))
  {
    while (false !== ($file = readdir($handle)))
    {
      $nextpath = $path . '/' . $file;
      if ($file != '.' && $file != '..' && !is_link ($nextpath))
      {
        if (is_dir ($nextpath))
        {
          $dircount++;
          $result = getDirectorySize($nextpath);
          $totalsize += $result['size'];
          $totalcount += $result['count'];
          $dircount += $result['dircount'];
        }
        elseif (is_file ($nextpath))
        {
          $totalsize += filesize ($nextpath);
          $totalcount++;
        }
      }
    }
  }
  closedir ($handle);
  $total['size'] = $totalsize;
  $total['count'] = $totalcount;
  $total['dircount'] = $dircount;
  return $total;
}

PHP中计算文件目录大小其实主要是用到"filesize"函数,通过递归的方法计算每个文件的大小,再计算他们的和即是整个文件目录的大小。

因为直接返回的文件大小是以字节为单位的,所以我们一般还要经过换算得到我们常见得大小,以下是单位换算的函数:

 代码如下 复制代码
 
function sizeFormat($size)
{
    $sizeStr='';
    if($size<1024)
    {
        return $size." bytes";
    }
    else if($size<(1024*1024))
    {
        $size=round($size/1024,1);
        return $size." KB";
    }
    else if($size<(1024*1024*1024))
    {
        $size=round($size/(1024*1024),1);
        return $size." MB";
    }
    else
    {
        $size=round($size/(1024*1024*1024),1);
        return $size." GB";
    }
 
}
 
$path="/home/www/htdocs";
$ar=getDirectorySize($path);
 
echo "<h4>路径 : $path</h4>";
echo "目录大小 : ".sizeFormat($ar['size'])."<br>";
echo "文件数 : ".$ar['count']."<br>";
echo "目录术 : ".$ar['dircount']."<br>";
 
//print_r($ar);
?>


后面附一个单位函数

该函数最主要的是根据文件的字节数,判断应当选择的统计单位,也就是说一个文件用某一单位比如MB,那么该文件肯定小于1GB,否则当然要用GB作为单位了,而且文件要大于KB,不然的话得用更小的单位统计。该函数代码如下

 代码如下 复制代码

//size()  统计文件大小
function size($byte)
{
    if($byte < 1024) {
      $unit="B";
    }
    else if($byte < 10240) {
      $byte=round_dp($byte/1024, 2);
      $unit="KB";
    }
    else if($byte < 102400) {
      $byte=round_dp($byte/1024, 2);
      $unit="KB";
    }
    else if($byte < 1048576) {
      $byte=round_dp($byte/1024, 2);
      $unit="KB";
    }
    else if ($byte < 10485760) {
      $byte=round_dp($byte/1048576, 2);
      $unit="MB";
    }
    else if ($byte < 104857600) {
      $byte=round_dp($byte/1048576,2);
      $unit="MB";
    }
    else if ($byte < 1073741824) {
      $byte=round_dp($byte/1048576, 2);
      $unit="MB";
    }
    else {
      $byte=round_dp($byte/1073741824, 2);
      $unit="GB";
    }

$byte .= $unit;
return $byte;
}

function round_dp($num , $dp)
{
  $sh = pow(10 , $dp);
  return (round($num*$sh)/$sh);
}

关于php round函数用法可参考 http://www.111cn.net/w3school/php/func_math_round.htm

 

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25