Pertanyaan PHP - dapatkan tanggal rilis versi php saat ini


Apakah mungkin dalam php untuk mendapatkan versi server php tanggal rilis?

Jadi katakanlah saya punya php 5.3.28.

Dari sesuatu seperti itu phpdate() harus kembali 11 Jul 2013.


5
2018-01-31 10:06


asal


Jawaban:


Maksud Anda 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

Tes di eval.in (tautan akan segera berakhir)


Memperbarui: Untuk mendapatkan yang sebenarnya tanggal rilis di Linux, bisa cocok phpversion () di 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 [tanggal] => 22 Jul 2010)

Mencoba ini dengan Debian Linux.


2
2018-01-31 10:53



Saya akan menggunakan phpinfo () dan mendapatkan Tanggal Pembuatan dari sana.

Ada cara yang cukup bagus untuk mendapatkan versi array phpinfo di salah satu contoh sini.

Setelah Anda memilikinya fungsi. Melakukan:

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

Maka saya akan membuat permintaan fitur untuk itu!


0
2018-01-31 10:54



Mendasarkan pada Antony D'Andrea tautan Saya telah sedikit dimodifikasi phpinfo_array berfungsi sehingga Anda dapat menggunakannya seperti phpinfo_array("Build Date");

Saya juga telah membuat fungsi phpdate ($ format) yang menanganinya.

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

Dan phpdate berfungsi kemudian

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

Karena saya baru saja menyalinnya, saya tidak tahu apa yang terjadi dalam regex sulap ini.

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

0
2018-01-31 12:02