在 PHP-FPM 的网页中,我们可以通过 phpinfo() 函数来查看当前 PHP 的状态及扩展干系信息。
而在 CLI 命令行脚本中,我们可以利用 php -m 命令来查看已加载的扩展。

动态加载扩展

首先,我们在 php.ini 中关闭 redis 扩展的加载,并且同时须要打开 enable_dl=1 ,这样,我们就可以利用 dl() 函数来动态加载一个扩展了。

dl("redis");echoextension_loaded("redis");//1

没错, dl() 函数正是用来动态加载扩展的一个函数。
不过它的利用是有许多限定的,这也并不是一个安全的函数。
以是在 PHP7 中,它在 php.ini 的配置 enable_dl 已经是默认关闭的了。
我们在生产环境也只管即便不要利用这种办法进行扩展的加载。

php查看扩展动态查看及加载PHP扩大 Webpack

其余,这个函数在 PHP7 中仅对 CLI 环境有效。
也便是说,在 PHP-FPM 的网页环境下,这个函数是没用的,纵然已经打开了 php.ini 中的 enable_dl 。

扩展加载的目录因此 PHP 默认的扩展目录为根本进行加载的,在 windows 环境下把稳扩展名为 .dll 文件。
当扩展加载失落败时,不仅这个函数会返回 false ,同时还会产生一条 E_WARNING 的缺点。
末了,在 PHP 安全模式下,这个函数也同样是无法利用的。

综上所述,在生产环境中,我们还是只管即便不要利用动态加载扩展的能力。
这个可以当成我们的一个学习资料,在自己本机电脑上不想一次加载太多扩展的情形下利用,当须要测试某些功能而须要某些分外的扩展时,再考虑利用这个功能进行本地的测试。

测试代码

https://github.com/zhangyue0503/dev-blog/blob/master/php/202005/source/%E5%8A%A8%E6%80%81%E6%9F%A5%E7%9C%8B%E5%8F%8A%E5%8A%A0%E8%BD%BDPHP%E6%89%A9%E5%B1%95.php

参考文档:

https://www.php.net/manual/zh/function.extension-loaded.php

https://www.php.net/manual/zh/function.dl.php