如何动态查看及加载PHP扩展
在编译并完成 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扩展开发之动态加载so模块与静态重编译PHP(上)
- php cli 下动态加载扩展
- PHP 如何查看扩展
- PHP扩展开发之动态加载so模块与静态重编译PHP(下)
- PHP intl扩展安装/ext/php_intl.dll文件无法动态加载的问题
- 如何查看PHP已安装的扩展
- 安装php的mcrypt扩展(动态加载编译)
- 通过源码包php-5.4.9.tar.gz编译安装PHP之后,如何加载动态模块,不需要重新配置PHP
- [php内核bug]动态链接方式编译的扩展, 扩展全局空间dtor导致core dump
- PHP 如何查看AJAX返回的对象和数组的内容
- 如何在PHP扩展里打开php openssl支持
- C++如何调用DLL呢,有两种,一种是静态,另外一种是动态,即通过调用windowsAPI 来加载和卸载DLL,具体思路:
- ubuntu 安装php 扩展和查看扩展包
- 查看nginx | apache | php | tengine | tomcat版本的信息以及如何隐藏版本信息
- 如何在Java运行的时候动态加载一个jar包到classpath里面
- 如何动态加载控件以及插件编程思想(C#)
- 如何在Windows Mobile下使用Native C++动态加载DLL
- 如何查看linux动态库中包含哪些函数
- 详解如何实现Element树形控件Tree在懒加载模式下的动态更新
- 如何创建和查看phpinfo