Search code examples
phpphp-extension

Locate available (not loaded) PHP extensions


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.


Solution

  • 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.