PHP检测扩展是否开启extension_loaded函数 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 服务。
常见坑
- 命令行和 FPM 是不同 php.ini,CLI 开了网页没开。
- extension_loaded 只查是否加载,不查版本。
- 函数不存在先用 function_exists 兜底也可。
- 编译内置扩展和动态扩展检测方式一致。
- 改了 php.ini 没重启,检测结果不变。
- 虚拟环境/宝塔面板有单独扩展管理。
- Windows 扩展名带 php_gd.dll,Linux 写 gd。
总结
extension_loaded('名称') 判断扩展是否加载,启动时批量检测给友好提示。CLI 与 FPM 用不同 ini,改完重启服务。用 php -m 和 get_loaded_extensions 核对,区分内置与动态扩展。
遇到问题加QQ23979811 协助处理