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 h
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.
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);
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.