«

PHP检测扩展是否开启extension_loaded函数

时间:2026-11-15 07:18     作者:emer     分类: PHP


前言

代码用到某扩展(如 gd、mbstring、pdo_mysql)却报 Call to undefined function,说明扩展没装或没开启。运行前用 extension_loaded 判断,给出友好提示,比直接报错更稳。本文讲解检测函数、查看已装扩展、开启方法。

操作步骤

1. 检测扩展是否加载

if (!extension_loaded('gd')) {
    exit('需要开启 gd 扩展');
}

2. 同时检测多个扩展

$need = ['pdo_mysql', 'mbstring', 'json'];
foreach ($need as $e) {
    if (!extension_loaded($e)) exit("缺少扩展:$e");
}

3. 查看所有已加载扩展

print_r(get_loaded_extensions());

4. 查看 php.ini 位置

php_ini_loaded_file();

5. 命令行查看

php -m
php -r "var_dump(extension_loaded('gd'));"

6. 开启扩展(php.ini)

extension=gd

改完重启 php-fpm 或 web 服务。

常见坑

  1. 命令行和 FPM 是不同 php.ini,CLI 开了网页没开。
  2. extension_loaded 只查是否加载,不查版本。
  3. 函数不存在先用 function_exists 兜底也可。
  4. 编译内置扩展和动态扩展检测方式一致。
  5. 改了 php.ini 没重启,检测结果不变。
  6. 虚拟环境/宝塔面板有单独扩展管理。
  7. Windows 扩展名带 php_gd.dll,Linux 写 gd。

总结

extension_loaded('名称') 判断扩展是否加载,启动时批量检测给友好提示。CLI 与 FPM 用不同 ini,改完重启服务。用 php -m 和 get_loaded_extensions 核对,区分内置与动态扩展。

遇到问题加QQ23979811 协助处理

标签: PHP php.ini extension_loaded 扩展