前段时间研究了一个新功能,也就是上传图片的时候会自动生成webp格式的文件,同时替换所有前端图片为webp格式。目的也很简单就是为了加载更加流畅,减小页面体积等等。

但是最近发现这个功能失效了,也不知道是哪里有问题,相关的代码没有动过,仔细回想之后发现是我更换了PHP版本,而这个功能依赖于其中的一个扩展:fileinfo,安装该扩展之后功能恢复正常。

那么问题来了,我是找到了原因,但是如果以后我忘记了或者说这个主题成为可售主题,我该怎么解决呢?最后找到了php自带的函数:extension_loaded。

该函数描述如下:

  • extension_loaded 函数介绍
  • 函数介绍
  • (PHP 4, PHP 5, PHP 7, PHP 8)

    extension_loaded — 检查一个扩展是否已经加载

  • 函数说明
  • extension_loaded(string $name): bool

    检查一个扩展是否已经加载。

  • 参数介绍
  • name
    扩展名称,大小写不敏感。 你可以用 phpinfo() 来查看一系列扩展名称,而在 CGI 或 CLI 的 PHP 版本里你可以使用 -m 参数来列出所有有效的扩展: $ php -m [PHP Modules] xml tokenizer standard sockets session posix pcre overload mysql mbstring ctype [Zend Modules]
  • 返回值
  • 如果 name 指定的扩展已加载,返回true,否则返回 false。
  • 所以如果你的某些功能需要依赖某些PHP扩展的话,请务必使用该函数提前进行检测或者告知用户,防止站点出现bug,使用方面也是非常简单的。

    这里以宝塔面板为例,直接前往PHP查看即可了解:

    点击图片指示按钮即可看到关于PHP所有的相关信息,直接搜索扩展对应的关键词,你就基本可以判断该扩展是否已经开启了,同时也可以在里面找到对应的扩展名称用来进行判断等等,有兴趣的可以自己去实践一下。