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

 更新时间:2021年04月26日 11:55:37   作者:硬核项目经理  
这篇文章主要介绍了如何动态查看及加载PHP扩展,帮助大家更好的理解和学习使用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-fpm重启导致的程序执行中断问题详解

    php-fpm重启导致的程序执行中断问题详解

    这篇文章主要给大家介绍了关于php-fpm重启导致的程序执行中断问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • PHP图片上传代码

    PHP图片上传代码

    PHP图片上传有好多种方法,今天给大家提供一个简单的方法。
    2013-11-11
  • Zend Framework创建自己的动作助手详解

    Zend Framework创建自己的动作助手详解

    这篇文章主要介绍了Zend Framework创建自己的动作助手实现方法,结合实例形式分析了基于助手的抽象基类Zend_Controller_Action_Helper_Abstract实现自定义动作助手的相关技巧,需要的朋友可以参考下
    2016-03-03
  • smarty模板引擎之分配数据类型

    smarty模板引擎之分配数据类型

    这篇文章主要介绍了smarty模板引擎之分配数据类型,实例分析了smarty模板引擎数据类型的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Thinkphp3.2实用篇之计算型验证码示例

    Thinkphp3.2实用篇之计算型验证码示例

    本篇文章主要介绍了Thinkphp3.2实用篇之计算型验证码示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • PHP中关于PDO数据访问抽象层的功能操作实例

    PHP中关于PDO数据访问抽象层的功能操作实例

    下面小编就为大家带来一篇PHP中关于PDO数据访问抽象层的功能操作实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 关于php中的json_encode()和json_decode()函数的一些说明

    关于php中的json_encode()和json_decode()函数的一些说明

    下面小编就为大家带来一篇关于php中的json_encode()和json_decode()函数的一些说明。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • Thinkphp5.0 框架视图view的比较标签用法分析

    Thinkphp5.0 框架视图view的比较标签用法分析

    这篇文章主要介绍了Thinkphp5.0 框架视图view的比较标签用法,结合实例形式分析了thinkPHP5框架eq、equal、neq、notequal、egt及switch、range、between等标签相关用法,需要的朋友可以参考下
    2019-10-10
  • typecho插件编写教程(二):写一个新插件

    typecho插件编写教程(二):写一个新插件

    这篇文章主要介绍了typecho插件编写教程(二):写一个新插件,本文是系列文章的第二篇,需要的朋友可以参考下
    2015-05-05
  • Laravel框架实现利用中间件进行操作日志记录功能

    Laravel框架实现利用中间件进行操作日志记录功能

    这篇文章主要介绍了Laravel框架实现利用中间件进行操作日志记录功能,结合实例形式分析了Laravel框架中间件的创建、引入以及使用中间件进行操作日志记录功能的相关实现技巧,需要的朋友可以参考下
    2018-06-06

最新评论