如何动态查看及加载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");php如何运行代码
// 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扩展的资料请关注其它相关⽂章!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论