This function safely determines the GD version, even on PHP versions earlier than 4.3 that lack the gd_info() function. Use it to avoid having your script halt with a fatal error if you try to use a TrueColor function and the GD version isn't 2.0 or later.
You can optionally specify a version, but if you specify version 2 it might be overridden. Once the version number is determined it's retained to speed future calls.
<?php
function gdVersion($user_ver = 0)
{
if (! extension_loaded('gd')) { return; }
static $gd_ver = 0;
if ($user_ver == 1) { $gd_ver = 1; return 1; }
if ($user_ver !=2 && $gd_ver > 0 ) { return $gd_ver; }
if (function_exists('gd_info')) {
$ver_info = gd_info();
preg_match('/\d/', $ver_info['GD Version'], $match);
$gd_ver = $match[0];
return $match[0];
}
if (preg_match('/phpinfo/', ini_get('disable_functions'))) {
if ($user_ver == 2) {
$gd_ver = 2;
return 2;
} else {
$gd_ver = 1;
return 1;
}
}
ob_start();
phpinfo(8);
$info = ob_get_contents();
ob_end_clean();
$info = stristr($info, 'gd version');
preg_match('/\d/', $info, $match);
$gd_ver = $match[0];
return $match[0];
} if ($gdv = gdVersion()) {
if ($gdv >=2) {
echo 'TrueColor functions may be used.';
} else {
echo 'GD version is 1. Avoid the TrueColor functions.';
}
} else {
echo "The GD extension isn't loaded.";
}
?>
The function only detects the GD version, but you could determine GD capabilities in a similar manner.