8
votes

Comment vérifier simplement si les serveurs La version PHP est de 5 ou plus?

Je crée une liste de contrôle de pré-installation pour un programme. Le programme nécessite PHP5, j'ai donc besoin de la liste de contrôle-script pour vérifier la disponibilité de PHP5.
Il existe une fonction comme phpversion () code>, qui retournera au format de 5.3.6 code> ou similaire. Cependant, je veux que la liste de contrôle soit très simple et vous indique simplement oui ou non. Donc, l'affichage de la version actuelle n'aime pas cela beaucoup. Ok, une solution consiste à utiliser le phpversion () code> et supprimer les comas, etc. mais n'y a-t-il pas une manière de Néater? (Assez étrange, il n'y a aucune information sur cette nulle part)

donc, Comment simplement vérifier si les serveurs La version PHP est de 5 ou plus? Strong> p>

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


0 commentaires

9 Réponses :


1
votes
echo 'Current PHP version: ' . phpversion();
You can have further information in the PHP documentation. This is available in PHP4 and over.

2 commentaires

Cela ne répond pas vraiment à sa question, ce qui semble être quelque chose comme "Comment puis-je dire si la sortie de la phpversion () est une aversion supérieure à ou égale à 5,0


Eh bien, s'il ne peut pas faire un si avec le numéro de phpversion (), nous avons un problème ... un peu de base de base?



18
votes

10 commentaires

Ce serait génial sauf: disponible depuis PHP 5.2.7.


Parfait! C'était exactement ce que je cherchais! Je me sens tellement gêné que je ne pouvais pas comprendre cela moi-même. Je pensais qu'il doit y avoir une fonction extrêmement étrange pour cela. Merci!!


@timdev: Vous venez de tuer mon bonheur .. Il n'y a pas une fonction similaire pour les versions inférieures de PHP?


Ce qui est disponible uniquement depuis la version 5.2, afin que cela ne fasse pas beaucoup de bien.


@Kalle - Voir ma réponse, vous utilisez simplement le substruisement () sur la valeur de retour de la phpersion (). c'est de la tarte.


@Kalle: Vérifiez mon édition pour un exemple plus complet pour PHP <5.2.7


Eh bien, c'est très déroutant, car la plupart de ces réponses fonctionnent. J'ai donc vérifié toutes les méthodes avec Microtime () et cette méthode me donne des résultats les plus stables (également les plus bas).


D'accord, sur la base des résultats de la performance, c'est la meilleure solution. Cependant, j'ai remplacé phpversion () avec php_version . Parce que ça a l'air Natre et semblait faire des choses 0.0000004 secondes plus rapidement. Donc merci pour la réponse!


Sachez que la vérification des performances dans de telles régions extrêmes est très négligeable.


@Luwe, oui accepté. Cependant, dans ces cas, vous devez faire une petite statistique sur le résultat le plus bas et le plus stable.



4
votes

Si la fonction PHPVERSION () le rendit comme un numéro droit, vous pouvez le faire:

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


5 commentaires

Il ne renvoie pas un nombre mais une chaîne contenant la version complète.


Amm, assez étrange, cela fonctionne. Wow, la réponse peut-elle être vraiment aussi simple?


@Goleztrol: C'est ce que ma première pensée était, mais techniquement, ce n'est qu'un chiffre avec des décimales ..


Cela fonctionne parce qu'ils sont comparés comme des chaînes. Cela échouera une fois que nous atteindrons la version 10. :) Ce n'est pas un nombre. Il contient deux points et ne peut pas être converti en un flotteur.


Pour l'enregistrement: phpversion () retourne comme une chaîne, il peut être converti en nombre avec number_format () . Cependant, il est plus lent que la méthode acceptée.



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

1 commentaires

Ouais, cela fonctionnera une fois que nous atteindrons la version 10. :) Meilleure recherche du point. Je sais que le développement PHP n'est pas très rapide, mais je pensais que celui de Firefox aussi, et maintenant ils publient 3 versions dans un an.



9
votes

voir http://www.php.net/manual/fr/function.version- Comparez.php pour un exemple:

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


2 commentaires

Oui, cependant, php_version n'est pas pris en charge dans PHP4, puis il perd le point ..?!


Si le programme d'installation doit vraiment fonctionner sur PHP <4.1, vous pouvez vérifier que la version_compare existe d'abord. if (fonction_exists ('version_compare') && version_compare (php_version, '5.0.0', '> ='))) . Cela devrait revenir à 4.0.



21
votes

Quelque chose comme ça, vous pourrez peut-être vous adapter:

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


2 commentaires

Bonne solution. Surtout parce que php_version est disponible alors que php_major_version comme mentionné par d'autres personnes, est uniquement disponible depuis 5,2.


Ouais allait suggérer PHP_MAJOR_VERSION, mais j'ai vu ce petit dégagement dans la documentation.



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

0 commentaires

0
votes

En réalité, Symfony2 inclut déjà un tel script. C'est dans app / check.php . Il vérifie un minimum de PHP 5.3.2 et aussi beaucoup d'autres choses.

Je vous suggère de simplement utiliser ça.


0 commentaires

0
votes

echo php_version_id;
// Vous utilisez la version 5.3.7 la sortie de 50307

ou echo php_major_version.php_minor_version.php_release_version; // Vous utilisez la version 5.3.7 la sortie de 537


2 commentaires

Le point de la vérification de la version était d'éliminer les serveurs, qui sont obsolètes. Si et php_version_id est depuis 5.2.7. version. Donc, si la PHP est la version 4 ... alors il y aura une erreur.


En outre, il apparaît que php_version_id doit être prédéfini dans votre code, il ne viendra pas de Serverside ee1.php.net/phpersion