如何简单地检查服务器PHP版本是否为5或更高?

如何简单地检查服务器PHP版本是否为5或更高?,php,validation,Php,Validation,我正在为一个程序创建一个安装前检查表。该程序需要PHP5,因此我需要检查清单脚本来检查PHP5的可用性。 有一个函数名为phpversion(),它将以5.3.6或类似格式返回。然而,我希望清单非常直接,简单地告诉你是或不是。所以显示当前版本对我没有多大帮助。好的,一种方法是使用phpversion()并删除coma等。但是没有更整洁的方法吗?(奇怪的是,任何地方都没有这方面的信息) 那么,如何简单地检查服务器PHP版本是否为5或更高版本? if (...) { echo 'Server

我正在为一个程序创建一个安装前检查表。该程序需要PHP5,因此我需要检查清单脚本来检查PHP5的可用性。
有一个函数名为
phpversion()
,它将以
5.3.6
或类似格式返回。然而,我希望清单非常直接,简单地告诉你是或不是。所以显示当前版本对我没有多大帮助。好的,一种方法是使用
phpversion()
并删除coma等。但是没有更整洁的方法吗?(奇怪的是,任何地方都没有这方面的信息)

那么,如何简单地检查服务器PHP版本是否为5或更高版本?

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

您可以在中获得更多信息。这在PHP4及以上版本中可用。

有一个预定义的常数:

echo PHP_MAJOR_VERSION // displays 5

因此:

以上仅适用于PHP>5.2.7,对于较低版本,请尝试以下方法:

if (strnatcmp(phpversion(),'5.0.0') >= 0)
{
  echo '5 or higher';
}
else
{
  echo '4 or lower';
}
此处的一条注释建议这样做:

如果函数phpversion()将其作为一个直数返回,则可以执行以下操作:

if ( phpversion() >=5 ) {
    echo 'Server has PHP5 or above!';
} else {
    echo 'Servers PHP version is lower then PHP5';
}
if(substr(phpversion(),0,1)>=5){
//php>=5
}否则{
//php<5
}
这并不难,是吗

编辑:如果我们担心版本10会破坏上述代码:

if ( strtok(phpversion(),'.') >= 5) {
    // php >= 5
}else{
    // php < 5
}
if(strtok(phpversion(),'.')>=5){
//php>=5
}否则{
//php<5
}
有关示例,请参见:

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

类似这样的情况,您可能能够适应:

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


您可以看到。

实际上,Symfony2已经包含了这样一个脚本。它位于
app/check.php
中。它至少检查PHP5.3.2以及其他许多内容


我建议您使用它。

echo PHP\u VERSION\u ID
//您使用5.3.7版的输出,如50307

或echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION.PHP_RELEASE_VERSION;

//您可以使用5.3.7版的输出,如537

,除了:
从PHP5.2.7开始就可用。
完美!那正是我要找的!我觉得很尴尬,我自己都搞不懂。我想这一定有一些非常奇怪的功能。谢谢@蒂姆德夫:你刚刚扼杀了我的幸福。。对于PHP的较低版本,没有类似的函数吗?它只在5.2版之后才可用,所以这不会有多大好处。@Kalle-请看我的答案,您只需在phpversion()的返回值上使用substr()。很简单。是的,一旦我们达到版本10,这就行了最好搜索点。我知道PHP的开发速度不是很快,但我也想到了FireFox,现在他们在一年内发布了3个版本。这并没有真正回答他的问题,这似乎是“如果他不能对phpversion()进行if运算,我如何判断phpversion()的输出是否大于或等于5.0?”数字我们有一个问题…有点基本不?它不返回数字,而是一个字符串,包含完整的版本。嗯,奇怪的是,它能工作。哇,答案真的那么简单吗?@GolezTrol:这是我的第一个想法,但从技术上讲,它只是一个带小数的数字。它确实有效,因为它们被作为字符串进行比较。它会失败当我们达到版本10时。:)它不是一个数字。它包含两个点,不能转换为浮点。对于记录:
phpversion()
以字符串形式返回,因此可以使用
number\u格式()将其转换为数字
。但是,它比公认的方法慢。是的,但是PHP4不支持PHP\u版本,那么它就失去了意义。如果安装程序真的需要在PHP<4.1上工作,您可以检查以确保首先存在版本比较。
如果(函数\u存在('VERSION\u compare')&&VERSION\u compare(PHP\u版本,'5.0.0','>=')))
。这应该可以追溯到4.0。这是一个很好的解决方案。特别是因为其他人提到的PHP_版本是可用的,而PHP_MAJOR_版本是从5.2开始才可用的。是的,我打算推荐PHP_MAJOR_版本,但我在文档中看到了这个小广告。版本检查的目的是消除过时的服务器。如果和
PHP\u VERSION\u ID
是从5.2.7.VERSION开始的。因此,如果PHP是版本4…则会出现错误。此外,PHP\u VERSION\u ID似乎必须在代码中预定义,它不会来自服务器端
if ( strtok(phpversion(),'.') >= 5) {
    // php >= 5
}else{
    // php < 5
}
if (version_compare(PHP_VERSION, '5.0.0', '>=')) { ...
<?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";
}
?>
$version = explode('.', phpversion());
$major = (int)$version[0];
$minor = (int)$version[1];
$release = (int)$version[2];