【问题标题】:Detect if the FreeType PHP extension is installed on the server检测服务器上是否安装了 FreeType PHP 扩展
【发布时间】:2011-06-03 09:52:52
【问题描述】:

如何测试 FreeType 扩展程序是否安装在运行 PHP 的服务器上?

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

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

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

【问题讨论】:

    标签: php php-extension freetype


    【解决方案1】:

    使用function_exists:

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

    希望对您有所帮助。

    【讨论】:

    • +1 这不是检查是否安装了 freetype,而是检查函数 imagettftext 是否可用 - 但这应该在给定的上下文中工作
    • :) 我只是希望为这个人指明正确的方向。
    • 是的,它确实会检查 GD 和 FreeType。 imagettftext manual page
    【解决方案2】:

    第一个有点复杂的方法:

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

    【讨论】:

    • 这可能很复杂,但它会起作用(那么为什么要反对?)
    • Downvote 不是我的,但是 1) 它需要努力让它工作,2) 它比任何其他解决方案都更脆弱(假设 php_info 的输出在未来发生变化)和3) 这是迄今为止计算成本最高的方法。
    【解决方案3】:

    试试function_exists(),即

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 这是检查扩展最简单最有效的方法!
      • @downvoter:我很想听听这个答案有什么问题。谢谢。
      • 您可以检查gd 扩展,但您不能检查freetype,因为它不是PHP 扩展(参见php -m 的输出)。 freetype 只是在编译期间链接到 gd。
      【解决方案5】:

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

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

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

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-05-17
          • 2021-03-19
          • 2015-12-24
          • 2015-03-11
          • 2013-09-26
          • 2014-07-20
          • 1970-01-01
          相关资源
          最近更新 更多