Locate available (not loaded) PHP extensions

拈花ヽ惹草 提交于 2019-12-19 16:54:07

问题


I need a way to find all the available PHP extensions whether they are loaded or not. I looked at How do I see the extensions loaded by PHP? but it only explains how to find loaded extensions. I want a way to find unloaded extensions also.

Knowing the extension_dir from php.ini I did a ls /extension_dir/*.so which returned 26 entries. When I tried with php -m, I got 57 entries. How is it possible?

How do I know which PHP extensions are available to be loaded? I don't want to know which are loaded but which are loadable.


回答1:


If you want the list of possibly loadable extensions, you should get the list of the files with an extension equal to the value of PHP_SHLIB_SUFFIX, and that are in the directory where PHP checks for PHP extensions (<install-dir>/lib/php/extensions/<debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO). If you want to avoid those extensions that are already loaded, you should pass the name of the extension (without file extension) to extension_loaded().

Keep in mind that a file with the right file extension could not be loaded from PHP as extension because the file doesn't have the right structure (for example because the file is corrupted), or because the PHP extension depends from files the extension doesn't find, or it is not able to load.




回答2:


Keep in mind that some extensions may be build statically into PHP. You will see these listed as extensions in php.ini but you will not be able to disable them, and in most cases you will not see an extension= line referring to them in php.ini or an .so / .DLL files. Removing statically compiled extensions requires recompiling PHP itself, and in most cases this is hardly needed as most statically compiled extensions tend to include core functionality which rarely needs to be removed.

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

Thanks goes to Matteo Tassinari.




回答3:


One way is to check the 'extension_dir' value:

phpinfo();

Then scan the directory to see the files:

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


来源:https://stackoverflow.com/questions/12157584/locate-available-not-loaded-php-extensions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!