找到可用(未加载)的PHP扩展

时间:2012-08-28 10:41:40

标签: php php-extension

我需要一种方法来查找所有可用的PHP扩展是否已加载。我查看了How do I see the extensions loaded by PHP?,但它只解释了如何查找已加载的扩展程序。我想要一种方法来查找卸载的扩展。

从php.ini知道extension_dir我做了ls /extension_dir/*.so,返回了26个条目。当我尝试php -m时,我得到了57个条目。怎么可能?

我如何知道可以加载哪些PHP扩展?我不想知道哪些已加载但哪些可加载

3 个答案:

答案 0 :(得分:4)

  

请记住,某些扩展可能会静态构建到PHP中。   你会看到这些在php.ini中被列为扩展,但你不会   能够禁用它们,在大多数情况下你不会看到扩展名=   在php.ini或.so / .DLL文件中引用它们的行。删除   静态编译的扩展需要重新编译PHP本身,并在   大多数情况下,这几乎不需要像大多数静态编译   扩展往往包括很少需要的核心功能   除去。

http://arr.gr/blog/2012/06/on-php-extensions/

感谢Matteo Tassinari。

答案 1 :(得分:2)

如果你想要可能可加载扩展的列表,你应该得到扩展名等于PHP_SHLIB_SUFFIX的文件列表,这些文件位于PHP检查PHP扩展的目录中({{ 1}})。如果要避免已加载的扩展名,则应将扩展名(不带文件扩展名)传递给extension_loaded()

请记住,无法从PHP加载具有正确文件扩展名的文件,因为该文件没有正确的结构(例如,因为文件已损坏),或者因为PHP扩展名取决于文件扩展程序找不到,或者无法加载。

答案 2 :(得分:1)

一种方法是检查'extension_dir'值:

phpinfo();

然后扫描目录以查看文件:

$exts = scandir("/usr/lib/php5/extension_dir/");
print_r($exts);