PHP - 获取当前的php版本发布日期

时间:2015-01-31 10:06:54

标签: php version maintainability

是否可以在php中获取服务器php版发布日期

所以我要说我有php 5.3.28

phpdate()更像11 Jul 2013

4 个答案:

答案 0 :(得分:2)

你的意思是Build Date

function phpdate($format="d M Y")
{
  ob_start(); phpinfo(1);
  if(preg_match('~Build Date (?:=> )?\K.*~', strip_tags(ob_get_clean()), $out))
    return date($format, strtotime($out[0]));
}

echo phpdate();
  

2013年3月4日

Test at eval.in链接即将过期


更新:要获取Linux上的实际release date,可以在更改日志中匹配phpversion()

// match phpversion() in changelog
function phpReleaseDate()
{
  $log = `zgrep '^[0-9].*PHP' /usr/share/doc/php5/changelog.gz`;
  $ver = preg_replace('/^\d+\.\d+\.\d+\K.*/', "", phpversion());
  $find = '/^(\d{2} [A-Z][a-z]{2} \d{4}), PHP ('.preg_quote($ver).')/';

  if(preg_match($find, $log, $out))
    return array('ver' => $out[2], 'date' => $out[1]);
}

print_r(phpReleaseDate());
  

数组([ver] => 5.3.3 [日期] => 2010年7月22日)

用Debian Linux尝试过这个。

答案 1 :(得分:0)

我会使用phpinfo()并从那里获取构建日期。

在其中一个示例here中有一种很好的方法可以获得phpinfo的数组版本。

一旦你拥有function。做:

$php_info = phpinfo_array(true);
$builddate = $php_info['PHP Configuration']['Build Date'];

然后我会为它做一个功能请求!

答案 2 :(得分:0)

基于 Antony D' Andrea 链接我稍微修改了phpinfo_array功能,因此您可以像phpinfo_array("Build Date");

一样使用它

我还创建了处理它的phpdate($ format)函数。

function phpinfo_array($info=false){
    /* Andale!  Andale!  Yee-Hah! */
    ob_start(); 
    phpinfo(-1);

    $pi = preg_replace(
        array('#^.*<body>(.*)</body>.*$#ms', '#<h2>PHP License</h2>.*$#ms',
        '#<h1>Configuration</h1>#',  "#\r?\n#", "#</(h1|h2|h3|tr)>#", '# +<#',
        "#[ \t]+#", '#&nbsp;#', '#  +#', '# class=".*?"#', '%&#039;%',
          '#<tr>(?:.*?)" src="(?:.*?)=(.*?)" alt="PHP Logo" /></a>'
          .'<h1>PHP Version (.*?)</h1>(?:\n+?)</td></tr>#',
          '#<h1><a href="(?:.*?)\?=(.*?)">PHP Credits</a></h1>#',
          '#<tr>(?:.*?)" src="(?:.*?)=(.*?)"(?:.*?)Zend Engine (.*?),(?:.*?)</tr>#',
          "# +#", '#<tr>#', '#</tr>#'),
        array('$1', '', '', '', '</$1>' . "\n", '<', ' ', ' ', ' ', '', ' ',
          '<h2>PHP Configuration</h2>'."\n".'<tr><td>PHP Version</td><td>$2</td></tr>'.
          "\n".'<tr><td>PHP Egg</td><td>$1</td></tr>',
          '<tr><td>PHP Credits Egg</td><td>$1</td></tr>',
          '<tr><td>Zend Engine</td><td>$2</td></tr>' . "\n" .
          '<tr><td>Zend Egg</td><td>$1</td></tr>', ' ', '%S%', '%E%'),
        ob_get_clean()
    );

    $sections = explode('<h2>', strip_tags($pi, '<h2><th><td>'));

    unset($sections[0]);

    $pi = array();
    foreach($sections as $section){
        $n = substr($section, 0, strpos($section, '</h2>'));
        preg_match_all(
            '#%S%(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?%E%#',
            $section, 
            $askapache, 
            PREG_SET_ORDER
        );

        foreach($askapache as $m)
            $pi[$m[1]]=(!isset($m[3])||$m[2]==$m[3])?$m[2]:array_slice($m,2);
    }

    if ( $info && isset( $pi[$info] ) ) return $pi[$info];
    return $pi;
}

然后phpdate功能

function phpdate($format = "d M Y") {
    return date($format, strtotime( phpinfo_array("Build Date") ));
}

我刚刚复制了它,我不知道这个神奇的正则表达式会发生什么。

phpinfo_array("Build Date"); //returns Apr 10 2014 17:15:04
phpdate("d M Y"); //returns 10 Apr 2014

答案 3 :(得分:0)

您总是可以在页面上找到发布日期:https://is.php.released.info