可使用php --ri扩展名、php -i | grep、phpversion()函数、phpinfo()页面或检查.so文件名及时间戳五种方法获取PHP已加载扩展的版本号。

如果您尝试确认当前PHP环境中已加载扩展的名称及其版本信息,但仅执行php -m无法获得版本号,则可能是由于该命令默认只输出模块名而不含版本字段。以下是获取已加载模块及对应版本的多种方法:
一、使用php -m结合php --ri查看特定扩展的版本信息
php -m仅列出已加载模块名称,而php --ri(即“PHP Runtime Information”)可为指定扩展提供包括版本号在内的详细运行时信息。此方法适用于已知扩展名并需精确验证其版本的场景。
1、执行php -m命令,获取所有已加载模块的简明列表。
2、从输出中识别目标扩展名,例如redis、opcache或mysqli。
立即学习“PHP免费学习笔记(深入)”;
3、对目标扩展执行php --ri 扩展名,例如:php --ri redis。
4、在返回内容中查找Version字段,其右侧值即为该扩展当前加载的版本号。
二、使用php -i配合grep提取扩展版本行
php -i输出完整的PHP配置与模块信息,等效于命令行版phpinfo()。通过管道过滤可快速定位含版本标识的行,适用于批量筛查多个扩展版本或自动化脚本处理。
1、执行php -i | grep -A 1 -B 1 "Version"以显示包含“Version”关键词的行及其上下文。
2、若需聚焦某扩展,先用php -m确认其存在,再执行php -i | grep -A 5 -B 1 "扩展名"定位其信息区块。
3、在匹配区块中查找version或Version(注意大小写不敏感)对应的值。
三、在PHP代码中调用phpversion()函数获取扩展版本
phpversion()函数在传入扩展名参数时,会返回该扩展的版本字符串;若未传参则返回PHP核心版本。此方式适用于Web环境或需嵌入脚本逻辑的场景,且结果直接可靠。
1、创建一个临时PHP文件,如check_version.php。
2、在文件中写入:<?php echo phpversion('gd'); ?>,将'gd'替换为目标扩展名。
3、在命令行中执行php check_version.php,终端将直接输出该扩展的版本号。
4、若输出为空或false,说明该扩展未被加载,需检查extension_dir路径与php.ini中extension=指令是否生效。
四、解析phpinfo()输出中的“Loaded Extensions”区块并人工比对版本
phpinfo()页面在“Additional Modules”或“Loaded Extensions”节下方通常不直接显示版本号,但部分扩展(如OPcache、Xdebug)会在自身配置段落中明确标注Version字段。此方法依赖扩展自身是否在初始化时注册版本信息。
1、新建info.php文件,内容为<?php phpinfo(); ?>。
2、将文件置于Web服务器可访问路径,并通过浏览器访问该URL。
3、在页面中搜索目标扩展名,进入其独立配置区块。
4、查找区块内Version、version或Zend Extension Build等字段,确认其值是否为有效版本标识。
五、检查extension_dir目录下.so文件的编译时间与命名特征辅助判断版本
当扩展未在phpinfo()或php --ri中暴露版本号时,可结合文件系统层面线索进行辅助推断。部分扩展在.so文件名中嵌入版本号(如imagick-3.7.0.so),或其构建时间戳与已知发布周期吻合。
1、执行php -i | grep extension_dir,获取扩展文件所在绝对路径。
2、进入该路径,执行ls -la查看所有.so文件列表。
3、观察目标扩展文件名是否含数字序列,例如memcached-3.2.0.so或xdebug-3.1.5.so。
4、若文件名无版本标识,执行stat -c "%y %n" *.so | grep 扩展名,查看其最后修改时间,与对应扩展官方发布日志交叉比对。



















