5

Is it possible in php to get server php version release date?

So let's say I've got php 5.3.28.

Than something like phpdate() should return 11 Jul 2013.

4 Answers 4

2

You mean 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();

04 Mar 2013

Test at eval.in (link expires soon)


Update: To get the actual release date on Linux, could match phpversion() in the changelog:

// 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());

Array ( [ver] => 5.3.3 [date] => 22 Jul 2010 )

Tried this with Debian Linux.

Sign up to request clarification or add additional context in comments.

1 Comment

@AdamPietrasiak I think it is the date, when PHP was compiled.
0

I would use phpinfo() and get the Build Date from there.

There is a pretty good way of getting an array version of phpinfo in one of the examples here.

Once you have that function. Do:

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

Then I would make a feature request for it!

Comments

0

Basing on Antony D'Andrea link I've modified slightly phpinfo_array function so you can use it like phpinfo_array("Build Date");

I've also created phpdate($format) function that handles it.

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;
}

And phpdate function then

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

As I've just copied it, I have no idea what happens in this magic regex.

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

Comments

0

You can always find a release date on a page: https://is.php.released.info

1 Comment

the question is asking for the release date of a given php version, not the release date of latest php version

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.