如何检查PECL扩展是否存在?

时间:2013-05-17 15:28:58

标签: php pecl

如果安装了PECL扩展,我如何使用PHP代码?

我希望在未安装扩展程序时优雅地处理案例。

4 个答案:

答案 0 :(得分:7)

我认为正常的方法是使用extension-loaded

if (!extension_loaded('gd')) {
    // If you want to try load the extension at runtime, use this code:
    if (!dl('gd.so')) {
        exit;
    }
}

答案 1 :(得分:5)

get_loaded_extensions符合条款。

像这样使用:

$ext_loaded = in_array('redis', get_loaded_extensions(), true);

答案 2 :(得分:4)

你看过get_extension_funcs吗?

答案 3 :(得分:2)

以不同的方式结合。您可以检查是否存在类,甚至是函数:class_existsfunction_existsget_extension_funcs

<?php
if( class_exists( '\Memcached' ) ) {
    // Memcached class is installed
}

// I cant think of an example for `function_exists`, but same idea as above

if( get_extension_funcs( 'memcached' ) === false ) {
    // Memcached isn't installed
}

您也可以变得非常复杂,并使用ReflectionExtension。构造它时,它将抛出ReflectionException。如果它没有抛出异常,你可以测试扩展的其他东西(比如版本)。

<?php
try {
    $extension = new \ReflectionExtension( 'memcached' );
} catch( \ReflectionException $e ) {
    // Extension Not loaded
}

if( $extension->getVersion() < 2 ) {
    // Extension is at least version 2
} else {
    // Extension is only version 1
}