(modifié le 4 novembre 2014 à 20:16)

But : détecter la version de PHP interprétant le code source sur son serveur

Suivant les versions de PHP vos scripts peuvent plus ou moins fonctionner.

Je vous propose aujourd'hui une astuce permettant de détecter la version PHP mais également de préciser votre version minimale requise.

En effet j'ai déjà eu assez de surprises dans ce style, surtout lorsque vous fournissez un script qui peut-être réutilisé par d'autres personnes : source d'incompatibilité garantie.

Voici une fonction permettant de pallier à ce souci :

function get_phpversion($version_requise = false ,$display = false)
    {
		if($version_requise == false AND $display == false) {
			echo 'Vous devez au moins préciser un paramètre pour la fonction get_phpversion()';
			exit;
		}

		# si TRUE passé en paramètre, permutation dans display car cela ne concerne pas $version_requise
		if($version_requise === true AND $display == false) {
			$display = true;
			$version_requise = false;
		}

		if(function_exists('phpversion'))
			$v = phpversion();
		elseif(PHP_VERSION)
			$v = PHP_VERSION;
		else
			return 'Impossible de détecter la version PHP';

		# suppression des "." pour rendre le nombre en type entier
		$v_entier = str_replace('.','',$v);
		$version_requise = str_replace('.','',$version_requise);

		$tiret_position = strpos($v_entier, '-');
		if($tiret_position !== FALSE)
			$v_entier = substr($v_entier, 0, $tiret_position);

		# affichage demandé
		if($display != false OR ($version_requise===true AND $display == false))
			echo $v;
		# affichage demandé, sans retour de la version
		if($display != false AND empty($version_requise))
			return;

		# ajout de 0 dans le cas d'une version 6 par exemple => 600, sinon 6 < 52 (6.0.0 < 5.2, illogique)
		$version_requise = str_pad($version_requise, strlen($v_entier) , 0);

		#retour version demandé
		if($version_requise != false) {
			if($v_entier >= $version_requise)
				return true;
			else
				return false;
		}
    }

Cette fonction comporte un double utilisation possible :

  • retour booléen = true si la version minimale requise ($version_requise) est satisfaite
  • affichage de la version (float) si l'affichage est demandé ($display) ou si aucun paramètre n'est passé
  • combinaison des deux : retour booléen + affichage de la version

Paramètres de la fonction :

bool/float get_phpversion (float $version_requise, bool $display)

get_phpversion affiche la version PHP si aucun paramètre n'est passé
get_phpversion affiche la version PHP si display = TRUE
get_phpversion retourne TRUE si la version de PHP version_requise est précisée et satisfaite
get_phpversion retourne TRUE/FALSE et affiche la version si version_requise et display sont précisés
Exemples d'utilisation (version PHP serveur = 5.2.5-3) :

get_phpversion('5'); // retourne TRUE
get_phpversion('5.3'); // retourne FALSE
get_phpversion('5.3',true); // retourne FALSE et affiche "5.2.5-3"
get_phpversion('5.0.1',true); // retourne TRUE et affiche "5.2.5-3"
get_phpversion('6'); // retourne FALSE
get_phpversion(true); // retourne NULL et affiche "5.2.5-3"

Faîtes en bon usage, si vous réaliser des modifications n'oubliez pas de me les transmettre (licence Creative Commons)

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter