2011-01-04 23 views
13

¿Cómo realizo una prueba para ver si la extensión de FreeType está instalada en un servidor que ejecuta PHP?Detecta si la extensión PHP de FreeType está instalada en el servidor

Quería hacer un sistema CAPTCHA simple en mi sitio, así que usé imagettftext() y funcionó bien. Pero, ¿qué ocurre si el servidor no tiene instalada la biblioteca FreeType?

Entonces, ¿hay alguna manera de detectar de alguna manera la biblioteca FreeType a través del código, y si no está presente, retroceda a algo como imagestring()?

Si no puedo usar imagettftext(), tendré que buscar alternativas para dibujar texto de fuente grande ya que el tamaño máximo imagestring no es bueno para algo así como un CAPTCHA.

+0

¿Qué sistema operativo es el servidor? –

Respuesta

12

Uso function_exists:

if (function_exists('imagettftext')) { 
    imagettftext(); 
} else { 
    // do other function 
} 

Espero que ayude.

+2

+1 esto no comprueba si se instaló freetype, sino que se comprueba si hay una función imagettftext disponible, pero esto debería funcionar en el contexto dado – Thariama

+0

:) Solo esperaba señalar a esta persona en la dirección correcta. – Norm

+0

Sí, comprueba tanto GD como FreeType. [página de manual de imagettftext] (http://php.net/manual/en/function.imagettftext.php) –

1

Una primera aproximación un tanto complicado:

llamada php_info() y búsqueda/analizar el resultado de freetype

+0

esto puede ser complicado, pero funcionará (¿por qué el voto a la baja?) – Thariama

+3

Downvote no fue mío, pero 1) tomará esfuerzo hacer que funcione, 2) es más frágil que cualquier otra solución (supongamos que la salida de 'php_info' cambia en el futuro) y 3) es la forma más costosa desde el punto de vista computacional de hacerlo por lejos. – Jon

+0

que es totalmente correcto :) – Thariama

0

Trate function_exists(), es decir

if (!function_exists('imagettftext')) { 
    // No freetype library 
} 

Probablemente sería mejor pedir alternativas a imagettftext como una pregunta separada.

17

Esto no va a ser mejor en la práctica que los function_exists soluciones ya publicados, pero la forma técnicamente correcta para comprobar es mediante el uso de extension_loaded.

+0

¡esa es la forma más fácil y efectiva de verificar la extensión! – Thariama

+1

@downvoter: Me encantaría saber qué pasa con esta respuesta. Gracias. – Jon

+0

Puede verificar la extensión 'gd', pero no puede verificar' freetype' simplemente porque no es una extensión PHP (vea la salida de 'php -m'). 'freetype' solo está vinculado a gd durante el tiempo de compilación. –

4

Suponiendo que la biblioteca GD está instalada, puede detectar la compatibilidad con Freetype utilizando la función gd_info().

$gdinfo = gd_info(); 
if($gdinfo['FreeType Support']) echo 'FreeType Support Enabled'; 

Si es necesario comprobar si la biblioteca GD se instala por primera vez, utilizar extension_loaded('gd');

Cuestiones relacionadas