本文目录导读:

- 使用
extension_loaded()函数(最推荐) - 使用
phpinfo()函数 - 使用
get_loaded_extensions()函数 - 使用
php -m命令行(不需要代码) - 使用
function_exists()检查特定函数 - 使用
class_exists()检查特定类 - 组合使用的最佳实践
- 推荐使用场景
在 PHP 中,有多种方法可以检查扩展是否安装,以下是常用的几种方法:
使用 extension_loaded() 函数(最推荐)
// 检查单个扩展
if (extension_loaded('mysqli')) {
echo "mysqli 扩展已安装";
} else {
echo "mysqli 扩展未安装";
}
// 检查多个扩展
$extensions = ['pdo', 'redis', 'curl'];
foreach ($extensions as $ext) {
echo $ext . ': ' . (extension_loaded($ext) ? '已安装' : '未安装') . "\n";
}
使用 phpinfo() 函数
// 输出所有 PHP 信息,包括已加载的扩展 phpinfo(); // 或者仅查看扩展信息 phpinfo(INFO_MODULES);
在浏览器中查看时,扩展信息会以表格形式显示。
使用 get_loaded_extensions() 函数
// 获取所有已加载的扩展列表
$loaded_extensions = get_loaded_extensions();
print_r($loaded_extensions);
// 检查特定扩展是否在列表中
$extensions = ['mysqli', 'redis', 'curl'];
foreach ($extensions as $ext) {
if (in_array($ext, $loaded_extensions)) {
echo "$ext 已安装\n";
} else {
echo "$ext 未安装\n";
}
}
使用 php -m 命令行(不需要代码)
在命令行中运行:
php -m
这会列出所有加载的模块。
使用 function_exists() 检查特定函数
有时可以检查扩展特有的函数是否存在:
// 检查 curl 扩展
if (function_exists('curl_init')) {
echo "curl 扩展已安装";
}
// 检查 mysqli 扩展
if (function_exists('mysqli_connect')) {
echo "mysqli 扩展已安装";
}
使用 class_exists() 检查特定类
// 检查 PDO 扩展
if (class_exists('PDO')) {
echo "PDO 扩展已安装";
}
// 检查 Redis 扩展
if (class_exists('Redis')) {
echo "Redis 扩展已安装";
}
组合使用的最佳实践
function checkExtension($extension) {
return extension_loaded($extension);
}
// 使用示例
$requiredExtensions = ['pdo', 'mysqli', 'curl'];
$missingExtensions = [];
foreach ($requiredExtensions as $ext) {
if (!checkExtension($ext)) {
$missingExtensions[] = $ext;
}
}
if ($missingExtensions) {
echo "缺失的扩展: " . implode(', ', $missingExtensions);
} else {
echo "所有必需的扩展已安装";
}
推荐使用场景
- 开发环境:使用
phpinfo()最直观 - 生产环境:使用
extension_loaded()最可靠 - 安装脚本:结合多个方法检查
- 命令行工具:使用
php -m最方便
建议:最推荐使用 extension_loaded() 函数,因为它简单、高效且准确。