Определить, установлено ли на сервере расширение FreeType PHP.

Как проверить, установлено ли расширение FreeType на сервере с PHP?

Я хотел сделать на своем сайте простую систему CAPTCHA, поэтому использовал imagettftext() и это работало нормально. Но что, если на сервере не установлена ​​библиотека FreeType?

Итак, есть ли способ каким-то образом обнаружить библиотеку FreeType через код, а если ее нет, вернуться к чему-то вроде imagestring()?

Если я не могу использовать imagettftext(), мне, возможно, придется искать альтернативы для рисования большого текста шрифтом, поскольку максимальный размер imagestring не подходит для чего-то вроде CAPTCHA.


person Bluemagica    schedule 04.01.2011    source источник


Ответы (6)


Используйте function_exists:

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

Надеюсь, это поможет.

person Norm    schedule 04.01.2011
comment
+1 это не проверяет, установлен ли freetype, а проверяет, доступна ли функция imagettftext, но это должно работать в данном контексте - person Thariama; 04.01.2011
comment
:) Я просто надеялся указать этому человеку правильное направление. - person Norm; 04.01.2011
comment
Да, он проверяет как GD, так и FreeType. страница руководства imagettftext - person Bob Ray; 27.07.2016



Это не будет работать для динамического кода (так что это неправильный ответ на вопрос), но для тех, кто просто хочет знать, установлен ли он, из командной строки в Linux:

php -i | grep -E "GD|FreeType"

Выходы:

GD Support => enabled
GD headers Version => 2.2.5
GD library Version => 2.2.5
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.4.11

ПРИМЕЧАНИЕ. В системе, где он не установлен, вы не получите никакого вывода.

person Anthony    schedule 04.02.2019

Первый несколько сложный подход:

вызовите php_info() и выполните поиск/анализ результата для свободного типа

person Thariama    schedule 04.01.2011
comment
это может быть сложно, но это сработает (так почему минус?) - person Thariama; 04.01.2011
comment
Понижение было не моим, но 1) потребуются усилия, чтобы заставить его работать, 2) оно более хрупкое, чем любое другое решение (предположим, в будущем будет вывод php_info изменений) и 3) это самый затратный в вычислительном отношении способ сделать это далеко. - person Jon; 04.01.2011

Попробуйте function_exists(), т.е.

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

Вероятно, вам лучше всего задать альтернативы imagettftext в качестве отдельного вопроса.

person Matt Gibson    schedule 04.01.2011