【问题标题】:PHP - get current php version release datePHP - 获取当前 php 版本发布日期
【发布时间】:2015-03-30 18:52:04
【问题描述】:

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

假设我有 php 5.3.28

phpdate() 应该返回11 Jul 2013

【问题讨论】:

    标签: php version maintainability


    【解决方案1】:

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

    【讨论】:

    • 问题是询问给定php版本的发布日期,而不是最新php版本的发布日期
    【解决方案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());
    

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

    在 Debian Linux 上试过这个。

    【讨论】:

    • @AdamPietrasiak 我认为这是 PHP 编译的日期。
    【解决方案3】:

    基于 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
    

    【讨论】:

      【解决方案4】:

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

      here 的一个例子中,有一个很好的方法来获取phpinfo 的数组版本。

      一旦你有了function。做:

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

      那我会为它提出功能请求!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-02
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        相关资源
        最近更新 更多