Получить версию расширения в php

Можно ли получить версию расширения в php?

get_loaded_extensions возвращает только имена загруженных расширений, но не версии :(


person avasin    schedule 31.01.2013    source источник
comment
Только если расширение предоставляет способ запроса его версии.   -  person Jon    schedule 31.01.2013
comment
@Jon Все расширения предоставляют способ запроса их версии: $version = phpversion("extensionName");.   -  person EM-Creations    schedule 31.01.2013
comment
@EM-Creations: Круто, я этого не знал!   -  person Jon    schedule 31.01.2013
comment
Что понимается под расширением? Расширение для Apache, PHP или браузера?   -  person David Spector    schedule 26.12.2018


Ответы (3)


Я считаю, что это то, что вы ищете:

$version = phpversion("extensionName");

Дополнительная информация

person EM-Creations    schedule 31.01.2013
comment
обратите внимание, что это не работает с curl и mcrypt (оба возвращают false), кажется, существует уже давно: bugs.php.net/bug.php?id=40582, ответ не найден. - person samluthebrave; 11.05.2015
comment
также не работает для PCRE (см. ссылку в комментарии выше), но вы можете проверить константу PCRE_VERSION для получения информации о версии - person webaware; 08.06.2016
comment
OpenSSL — интересный случай. Ни этот метод, ни метод Reflection ниже не возвращают никакой информации о версии. Но OpenSSL создает константы OPENSSL_VERSION_TEXT и OPENSSL_VERSION_NUMBER. Очевидно, что не существует стандартизированного способа получения версий из расширений. - person Will Fastie; 31.01.2017

В командной строке, где расширение — это имя расширения.

php --re extension | head -1

Если вы не уверены в имени расширения, перечислите расширения с помощью php -m.

person Quolonel Questions    schedule 29.09.2017
comment
Это не работает, если вы пытаетесь определить версию extension.dll, которая несовместима с вашей версией php. - person Radon8472; 07.08.2018

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

<?php
    $ext = new ReflectionExtension('mysqli');
    var_dump($ext->getVersion());
?>
person aagamezl    schedule 13.11.2014
comment
Предоставьте некоторое объяснение - person Amy; 13.11.2014
comment
Это возвращает ту же информацию о версии, что и phpversion($extension). Я проверил 58 расширений, 30 из которых вернули информацию о версии. - person Will Fastie; 31.01.2017
comment
В PHP 7.1-7.3 (подробнее?) и phpversion(имя расширения), и ReflectionExtension возвращают версию PHP (а не версию расширения). Я предполагаю, что это что-то вроде версии-оболочки, которая автоматически обновляется во время выпуска. Не то чтобы полезно. Он проверяет, существует ли расширение (если оно не существует, оно возвращает null) - person Henk Poley; 07.07.2021
comment
Исправление, он возвращает ложь. - person Henk Poley; 07.07.2021