extension_loaded

编译完成php.ini的配置后,我们成功安装了一个php扩展。不过PHP也给我们提供了两个函数,可以查看扩展状态,在动态运行时加载php.ini中没有配置的扩展。下面,我们来看看它们的用途。

查看是否已经加载了扩展

echo extension _ loaded(& # 34;redis & # 34);一个非常简单的函数,它的功能是检查一个扩展是否已经被加载。它返回一个布尔值,当加载扩展时返回true,如果没有加载扩展则返回false。

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

动态加载扩展

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

dl(& # 34;redis & # 34);echo extension _ loaded(& # 34;redis & # 34);//1是的,dl()函数是一个用来动态加载扩展的函数。但是它的使用有很多限制,也不是一个安全的功能。所以在PHP7中,它在php.ini中的配置enable_dl已经默认关闭。对于生产环境中的扩展加载,我们也尽量不使用这种方法。

另外,这个函数只在PHP7的CLI环境下有效。也就是说,在PHP-FPM web环境下,这个函数是没有用的,即使php.ini中的enable_dl已经打开。

扩展加载目录是基于PHP的默认扩展目录加载的。注意带扩展名的文件。windows环境下的dll。当扩展加载失败时,这个函数不仅会返回false,还会生成一个E_WARNING错误消息。最后,在PHP安全模式下,这个函数也不可用。

综上所述,在生产环境中,我们还是尽量不要使用动态加载扩展的能力。当我们不想一次加载太多扩展时,这可以作为我们在本地计算机上使用的学习材料。当我们需要测试一些功能,需要一些特殊的扩展时,我们会考虑使用这个功能进行本地测试。

测试代码:

https://github . com/zhangyue 0503/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 % BD PHP % 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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论