如何动态查看及加载PHP扩展

admin3年前PHP教程105
目录
查看是否已经加载了扩展动态加载扩展测试代码:

在编译并完成 php.ini 的配置之后,我们就成功的安装了一个 PHP 的扩展。不过, PHP 也为我们提供了两个在动态运行期间可以查看扩展状态以及加载未在 php.ini 中进行配置的扩展的函数。下面,我们就来看看它们的使用。

查看是否已经加载了扩展
echo extension_loaded("redis");

非常简单的一个函数,它的作用就是检查一个扩展是否已经加载。它返回的是一个布尔值,当扩展已经加载则返回 true ,如果扩展没有加载,则返回 false 。

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

动态加载扩展

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


dl("redis");
echo extension_loaded("redis");
// 1

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

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

扩展加载的目录是以 PHP 默认的扩展目录为基础进行加载的,在 windows 环境下注意扩展名为 .dll 文件。当扩展加载失败时,不仅这个函数会返回 false ,同时还会产生一条 E_WARNING 的错误消息。最后,在 PHP 安全模式下,这个函数也同样是无法使用的。

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

测试代码:
<?php
 
echo extension_loaded("redis");
 
dl("redis");
 
echo extension_loaded("redis");

以上就是如何动态查看及加载PHP扩展的详细内容,更多关于动态查看及加载PHP扩展的资料请关注其它相关文章!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

利用PHP实现递归删除链表元素的方法示例

前言这篇文章介绍一下 递归,递归的本质是将原来的问题转化为更小的同一个问题,解决这些更小问题的过程。下面通过两个递归的例子帮助学习对递归的理解。1.递归数组求和例如某个数组 $arr = [1,2,3...

如何在thinkphp中使用windows计划任务定时执行php文件

实现思路如下:通过win的“任务”功能来定时执行一个bat文件,bat文件会调用php.exe文件,php.exe可以传递参数指定执行哪个类和方法方法如下:一,thinkphp...

PHP远程调用以及RPC框架

目录前言分模块分项目CURLRPCYarThriftSOAPJSON-RPC项目拆分带来的变化项目细化人员需求文档后记前言一个项目,从开始到版本更新,一直到最后的版本维护。功能在不断增多,对应的代码量...

详解PHP接口签名验证

概览在设计签名验证的时候,一定要满足以下几点:可变性:每次的签名必须是不一样的。时效性:每次请求的时效性,过期作废。唯一性:每次的签名是唯一的。完整性:能够对传入数据进行验证,防止篡改。下面主要分享一...

购买宁波高防服务器进行ddos攻击防御多少g才够用

购买宁波高防服务器进行ddos攻击防御多少g才够用?购买宁波高防服务器进行DDoS攻击防御时,需要考虑多个因素,包括攻击类型、攻击流量、服务器的带宽和防护能力等等。因此,不同的防御需求需要不同的防御能...

购买高防服务器需要该考虑什么?国内高防服务器购买需要注意哪些事项?

相比于普通服务器,高防服务器在安全性上面更让人放心一些。确实,高防服务器由于硬件的优秀以及足够的带宽,能够有效抵御普通服务器根本防不住的CC、DDOS、SYN等一系列外来攻击。在国内,大多数企业有高防...