【问题标题】:Retrieve extension version in php在 php 中检索扩展版本
【发布时间】:2013-01-15 13:59:04
【问题描述】:

是否可以在php中获取扩展版本?

get_loaded_extensions 只返回加载的扩展名,而不是版本:(

【问题讨论】:

  • 仅当扩展提供了一种查询其版本的方式。
  • @Jon 所有扩展都提供了一种查询其版本的方法:$version = phpversion("extensionName");
  • @EM-Creations:酷,我不知道!
  • 扩展是什么意思?扩展至 Apache、PHP 或浏览器?

标签: php php-extension


【解决方案1】:

我相信这就是您要找的:

$version = phpversion("extensionName");

More information

【讨论】:

  • 请注意,这不适用于curl & mcrypt(均返回false),似乎已经存在了很长时间:bugs.php.net/bug.php?id=40582,没有找到答案。跨度>
  • 也不适用于 PCRE(请参阅上面评论中的链接),但您可以查看常量 PCRE_VERSION 以获取版本信息
  • OpenSSL 是一个有趣的案例,这个方法和下面的 Reflection 方法都没有返回任何版本信息。但是 OpenSSL 会实例化常量 OPENSSL_VERSION_TEXT 和 OPENSSL_VERSION_NUMBER。显然没有从扩展中获取版本的标准化方法。
【解决方案2】:

在命令行中,extension 是扩展名。

php --re extension | head -1

如果不确定扩展名,请使用php -m 列出扩展名。

【讨论】:

  • 如果您尝试检测与您的 php 版本不兼容的 extension.dll 版本,这将不起作用
【解决方案3】:

http://php.net/manual/en/reflectionextension.getversion.php

<?php
    $ext = new ReflectionExtension('mysqli');
    var_dump($ext->getVersion());
?>

【讨论】:

  • 提供一些解释
  • 这将返回与 phpversion($extension) 相同的版本信息。我检查了 58 个扩展,其中 30 个返回了版本信息。
  • 在 PHP 7.1-7.3(更多?)下,phpversion("extension name") 和 ReflectionExtension 返回 PHP 版本(不是扩展版本)。我想这有点像包装器版本,它会在发布期间自动提升。没那么有用。它会检查扩展是否存在(如果不存在则返回 null)
  • 修正,返回false。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 2014-07-06
  • 2020-04-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
相关资源
最近更新 更多