2011-01-04 10 views
13

Jak mogę sprawdzić, czy rozszerzenie FreeType jest zainstalowane na serwerze z PHP?Wykryj, czy rozszerzenie PHP FreeType jest zainstalowane na serwerze

Chciałem zrobić prosty system CAPTCHA na mojej stronie, więc użyłem imagettftext() i działało dobrze. Ale co, jeśli serwer nie ma zainstalowanej biblioteki FreeType?

Czy istnieje sposób, aby w jakiś sposób wykryć bibliotekę FreeType za pomocą kodu, a jeśli jej nie ma, cofnąć się do czegoś takiego jak imagestring()?

Jeśli nie mogę użyć imagettftext(), być może będę musiał spojrzeć na alternatywy, aby narysować duży tekst czcionki, ponieważ rozmiar maksymalny imagestring nie jest dobry na coś takiego jak CAPTCHA.

+0

Jaki system operacyjny jest serwer? –

Odpowiedz

12

Zastosowanie function_exists:

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

nadzieję, że pomoże.

+2

+1 to nie sprawdza, czy jest zainstalowany freetype, ale sprawdzenie, czy funkcja imagettftext jest dostępna - ale to powinno działać w danym kontekście – Thariama

+0

:) Miałem tylko nadzieję wskazać tę osobę we właściwym kierunku. – Norm

+0

Tak, sprawdza zarówno GD, jak i FreeType. [podręczna strona podręcznika obrazu] (http://php.net/manual/en/function.imagettftext.php) –

1

Pierwszy nieco skomplikowane podejście:

wezwanie php_info() i wyszukiwania/analizować wynik dla freetype

+0

może to być skomplikowane, ale zadziała (więc dlaczego głosowanie?) – Thariama

+3

Dół nie był mój, ale 1) będzie wymagało wysiłku, aby to działało, 2) jest bardziej kruche niż jakiekolwiek inne rozwiązanie (przypuśćmy, że wyjście php_info zmienia się w przyszłości) i 3) jest to najbardziej kosztowny obliczeniowo sposób, aby zrobić to zdecydowanie. – Jon

+0

który jest totalnie poprawny :) – Thariama

0

Spróbuj function_exists(), tj

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

Wy prawdopodobnie najlepiej prosząc o alternatywy imagettftext jako osobne pytanie.

17

To nie będzie lepiej w praktyce niż rozwiązania function_exists już pisał, ale technicznie poprawny sposób sprawdzić to za pomocą extension_loaded.

+0

to najłatwiejszy i najskuteczniejszy sposób sprawdzenia rozszerzenia! – Thariama

+1

@downvoter: Bardzo chciałbym usłyszeć, co jest nie tak z tą odpowiedzią. Dzięki. – Jon

+0

Możesz sprawdzić rozszerzenie 'gd', ale nie możesz sprawdzić' freetype' tylko dlatego, że nie jest to rozszerzenie PHP (zobacz wyjście 'php -m'). 'freetype' jest po prostu połączony z gd podczas kompilacji. –

4

Zakładając, że biblioteka GD jest zainstalowana, możesz wykryć obsługę Freetype za pomocą funkcji gd_info().

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

Jeśli trzeba sprawdzić, czy biblioteka GD jest zainstalowana najpierw użyć extension_loaded('gd');

Powiązane problemy