我需要一种方法来查找所有可用的PHP扩展是否已加载。我查看了How do I see the extensions loaded by PHP?,但它只解释了如何查找已加载的扩展程序。我想要一种方法来查找卸载的扩展。
从php.ini知道extension_dir我做了ls /extension_dir/*.so
,返回了26个条目。当我尝试php -m
时,我得到了57个条目。怎么可能?
我如何知道可以加载哪些PHP扩展?我不想知道哪些已加载但哪些可加载。
答案 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);