13

如何测试以查看是否在运行 PHP 的服务器上安装了 FreeType 扩展?

我想在我的网站上制作一个简单的验证码系统,所以我使用imagettftext()了它并且效果很好。但是如果服务器没有安装 FreeType 库怎么办?

那么有没有办法通过代码以某种方式检测 FreeType 库,如果它不存在,回退到类似的东西imagestring()

如果我不能使用imagettftext(),我可能不得不寻找替代方法来绘制大字体文本,因为imagestring最大尺寸不适合 CAPTCHA 之类的东西。

4

6 回答 6

17

在实践中不会比function_exists已经发布的解决方案更好,但技术上正确的检查方法是使用extension_loaded.

于 2011-01-04T13:46:42.257 回答
12

使用function_exists

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

希望有帮助。

于 2011-01-04T13:41:55.353 回答
5

假设安装了 GD 库,您可以使用gd_info()函数检测 Freetype 支持。

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

如果您需要先检查是否安装了 GD 库,请使用extension_loaded('gd');

于 2011-01-04T14:54:41.233 回答
3

这不适用于动态代码(因此不是问题的真正答案),但对于只想知道它是否已安装的任何人,从 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

注意:在没有安装它的系统上,您将不会得到任何输出。

于 2019-02-04T13:18:53.220 回答
1

第一种有点复杂的方法:

调用php_info()并搜索/解析 freetype 的结果

于 2011-01-04T13:42:17.050 回答
0

尝试function_exists(),即

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

您最好将 imagettftext 的替代品作为一个单独的问题询问。

于 2011-01-04T13:42:55.727 回答