2011-08-25 10 views
8

私はプログラムのインストール前チェックリストを作成しています。プログラムにはPHP5が必要です。したがって、PHP5の可用性をチェックするためにチェックリストスクリプトが必要です。
phpversion()という機能があり、5.3.6などの形式で返されます。しかし、私はチェックリストを非常に単純なものにしたいと思います。現在のバージョンを表示することはそれほど手伝ってくれません。さて、1つの方法は、phpversion()を使用して、昏睡などを削除することです。しかし、そこに穏やかな方法ですか? (奇妙なことに、これに関する情報はどこにもありません)サーバーのバージョンが5以上であるかどうかを確認するにはどうすればいいですか?

したがって、サーバーのPHPバージョンが5以上であるかどうかを確認するにはどうすればいいですか?

if (...) { 
    echo 'Server has PHP5 or above!'; 
} else { 
    echo 'Servers PHP version is lower then PHP5'; 
} 

答えて

14

定義済みの定数があります:

ので
echo PHP_MAJOR_VERSION // displays 5 

http://nl.php.net/manual/en/reserved.constants.php#reserved.constants.core

:上記のみ

if (defined('PHP_MAJOR_VERSION') && PHP_MAJOR_VERSION >= 5) 
{ 
    echo 'Server has PHP 5 or above!'; 
} 
else 
{ 
    echo 'Servers PHP version is lower then PHP5'; 
} 

はPHP < 5.2.7で動作し、低バージョンの代わりにこれを試してみてください。

if (strnatcmp(phpversion(),'5.0.0') >= 0) 
{ 
    echo '5 or higher'; 
} 
else 
{ 
    echo '4 or lower'; 
} 

それはここのコメントの1で提案された:関数phpversion()は単にストレート番号など、あなたが行うことができ、それを返している場合http://www.php.net/manual/en/function.phpversion.php#91816

+1

それは素晴らしいです: 'PHP 5.2.7以降に利用可能' – timdev

+0

パーフェクト!それはまさに私が探していたものでした!私は自分自身を理解できないほど恥ずかしい気がします。私はこれのためにいくつかの非常に奇妙な機能がなければならないと思った。ありがとう!! –

+0

@timdev:あなたは私の幸せを殺したばかりです。PHPの下位バージョンでも同様の機能はありませんか? –

1
echo 'Current PHP version: ' . phpversion(); 

あなたはPHP documentationにさらに情報を持つことができます。これはPHP4以降で利用可能です。

+1

)は大なり-または等しく-に嫌悪5です。0 – timdev

+0

phpversion()番号でIFを実行できない場合は、問題があります。ちょっと基本的なものですか? –

4

なかった
if (phpversion() >=5) { 
    echo 'Server has PHP5 or above!'; 
} else { 
    echo 'Servers PHP version is lower then PHP5'; 
} 
+0

数字は返しませんが、フルバージョンを含む文字列を返します。 – GolezTrol

+0

Amm、奇妙なことに、これはうまくいきます。うわー、答えは本当に簡単なことができますか? –

+0

@GolezTrol:私の最初の考えは何だったのですか、それは技術的には小数点以下の数字にすぎません。 –

1
if (substr(phpversion(),0,1) >= 5) { 
    //php >= 5 
}else{ 
    //php < 5 
} 

とても辛かったですね。

EDIT:私たちは上記のコードを壊すバージョン10心配している場合:

if (strtok(phpversion(),'.') >= 5) { 
    // php >= 5 
}else{ 
    // php < 5 
} 
+0

ええと、バージョン10になったらうまくいくでしょう。:)ドットをよりよく探します。私はPHPの開発が非常に高速ではないことを知っていますが、私はFireFoxのことも考えていました。そして今、彼らは1年で3つのバージョンをリリースしました。 – GolezTrol

+0

良い点。編集を参照してください。 – timdev

9

は、例えばhttp://www.php.net/manual/en/function.version-compare.phpを参照してください:あなたは適応させることができるかもしれない。このような

if (version_compare(PHP_VERSION, '5.0.0', '>=')) { ... 
+0

ニース!私はそれを忘れてしまった! – timdev

+0

はい、PHP4ではPHP_VERSIONはサポートされていませんが、ポイントが失われます。 –

+0

インストーラが実際にPHP <4.1で動作する必要がある場合は、まずversion_compareが存在することを確認できます。 'if(function_exists( 'version_compare')&& version_compare(PHP_VERSION、 '5.0.0'、 '> =')))'。 4.0に戻ってしまうはずです。 – mcrumley

18

何か:

<?php 
if (version_compare(PHP_VERSION, '6.0.0') >= 0) { 
    echo 'I am at least PHP version 6.0.0, my version: ' . PHP_VERSION . "\n"; 
} 

if (version_compare(PHP_VERSION, '5.3.0') >= 0) { 
    echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "\n"; 
} 

if (version_compare(PHP_VERSION, '5.0.0', '>=')) { 
    echo 'I am using PHP 5, my version: ' . PHP_VERSION . "\n"; 
} 

if (version_compare(PHP_VERSION, '5.0.0', '<')) { 
    echo 'I am using PHP 4, my version: ' . PHP_VERSION . "\n"; 
} 
?> 

documentation hereが表示されます。

+1

良い解決策。特に、PHP_VERSIONはPHP_MAJOR_VERSIONが他の人に言及されている間に利用可能であるため、5.2以降しか利用できません。 – GolezTrol

+0

ええ、PHP_MAJOR_VERSIONを提案しようとしていましたが、私はドキュメンテーションでその小さな宣言を見ました。 –

1
$version = explode('.', phpversion()); 
$major = (int)$version[0]; 
$minor = (int)$version[1]; 
$release = (int)$version[2]; 
0

実際、Symfony2にはすでにこのようなスクリプトが含まれています。それはapp/check.phpです。それは、PHP 5.3.2の最小値と他の多くのものをチェックします。

私はちょうどそれを使用することをお勧めします。

本当にphpversionの出力(場合どのように私が言うことができる」のようなものであると思われる彼の質問に、答えていない
0

echo PHP_VERSION_ID;
//You use version 5.3.7 the output like 50307

or echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION.PHP_RELEASE_VERSION; //You use version 5.3.7 the output like 537

+0

バージョンチェックのポイントは、古くなったサーバーを排除することでした。もし 'PHP_VERSION_ID'が5.2.7以降であれば。バージョン。 PHPがバージョン4の場合は、エラーが発生します。 –

+0

また、PHP_VERSION_IDはコード内にあらかじめ定義されている必要がありますが、サーバー側のhttp://ee1.php.net/phpversionからは得られません –

関連する問題