我该如何查看PHP加载的扩展?

240

这个信息应该在phpinfo()的输出中,但我不知道具体在哪里。是在"Additional Modules"部分还是其他地方?我试图弄清楚为什么一些扩展似乎没有加载,但我甚至不知道应该在哪里查看。

11个回答

361

运行

php -m
将会列出所有的模块,而
php -i
则会提供更详细的信息以了解当前配置。


5
这将为您提供在PHP CLI上下文中加载的模块,这可能与为Web请求提供服务的PHP不同。 - Lucas Bustamante

106

运行命令。您将获得已安装的扩展:

php -r "print_r(get_loaded_extensions());"

或者运行以下命令获取所有模块的安装和卸载版本:

dpkg -l | grep php5

或者如果你需要它看起来更漂亮(例如逗号分隔):php -r“print_r(implode(',',get_loaded_extensions()));” - Jesse Nickles

58

11
这个命令行可以运行 php -r 'print_r(get_loaded_extensions());',它会输出与 php -m 相同的列表。 - phpguru
2
导出带有版本号的模块的命令:php -r "phpinfo(INFO_MODULES);" | grep -B 3 -i version > modules.txt - Agnius Vasiliauskas

54
您想要运行:
 php -m 
在命令行中,或者如果您可以访问服务器配置文件,请打开。
/etc/php5/apache2/php.ini

看看所有的扩展功能,

您甚至可以通过切换开和关来启用或禁用它们,就像这样:

<Extension_name> = <[On | Off]>

28
  <?php 
      echo "<pre>";
      print_r(get_loaded_extensions());
      echo "<pre/>";
 ?>

php -m 列出的列表比 get_loaded_extensions() 长得多,而后者不列出 curl、mbstring 等许多扩展。为什么会这样?我已经安装了 curl 和 mbstring,但它们似乎在 php 脚本中没有显示出来? - Meryan
如何按字母顺序排序 get_loaded_extensions()?以便与其他正常工作的 PHP 安装进行比较,谢谢。 - Meryan
1
@Meryan 我相信你看到了所有可用扩展(php -m)和实际加载的扩展(get_loaded_extensions)之间的差异。在你的情况下,我认为这意味着你还没有启用curl或mbstring。 - beeThree

20

如果您想测试特定扩展是否已加载,您还可以使用extension_loaded函数,有关文档,请参见此处

php -r "var_dump(extension_loaded('json'));"

1
我特别喜欢这个解决方案并使用它,因为它允许我的代码检查所需的扩展并显示有意义的消息以终止程序。这意味着代码会告诉我是否出现了问题,我不必记住。我还添加了最低PHP版本检查 - 这只需要几行代码。 - Brian C

10

我遇到了同样的问题,我需要知道安装了哪些模块以及它们的版本。目前,我的解决方案是通过命令行让PHP告诉我。请注意,“Core”是指PHP。

php -r '$all = get_loaded_extensions(); foreach($all as $i) { $ext = new ReflectionExtension($i); $ver = $ext->getVersion(); echo "$i - $ver" . PHP_EOL;}'

输出:

Core - 7.4.30
date - 7.4.30
libxml - 7.4.30
...
mcrypt - 1.0.5
bcmath - 7.4.30
bz2 - 7.4.30
...
xml - 7.4.30
xmlwriter - 7.4.30
xsl - 7.4.30
zip - 1.15.6

10

get_loaded_extensions() 输出扩展名列表。

phpinfo(INFO_MODULES); 输出扩展名及其详细信息。


谢谢,你对本地函数很有帮助。 - Sharifur Robin

4
你问在phpinfo()输出中如何查看已加载的扩展。
答案:
它们会在底部作为单独的部分/表格列出,但仅当它们被加载时才会列出。 以下是已加载Curl扩展的示例。

enter image description here ...

... enter image description here

我使用Linux Debian安装了它:

sudo apt-get install php7.4-curl

3
你可以通过以下方式查看PHP安装的所有扩展:
- Debian/Ubuntu
dpkg --get-selections | grep -i php

-RHEL/CentOS

yum list installed | grep -i php

-Fedora 22+

dnf list installed | grep -i php

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接