dl

Loads a PHP extension at runtime

&reftitle.description; `bool` `dl` `string` `extension_filename`

Loads the PHP extension given by the parameter `extension_filename`.

Use `extension_loaded` to test whether a given extension is already available or not. This works on both built-in extensions and dynamically loaded ones (either through &php.ini; or `dl`).

This function is only available for the CLI and embed SAPIs, and the CGI SAPI when run from the command line.

&reftitle.parameters;

`extension_filename`

- This parameter is only the filename of the extension to load which also depends on your platform. For example, the sockets extension (if compiled as a shared module, not the default!) would be called `sockets.so` on Unix platforms whereas it is called `php_sockets.dll` on the Windows platform.

  The directory where the extension is loaded from depends on your platform:

  Windows - If not explicitly set in the &php.ini;, the extension is loaded from `C:\php5\` by default.

  Unix - If not explicitly set in the &php.ini;, the default extension directory depends on

  - whether PHP has been built with `--enable-debug` or not

  - whether PHP has been built with ZTS (Zend Thread Safety) support or not

  - the current internal `ZEND_MODULE_API_NO` (Zend internal module API number, which is basically the date on which a major module API change happened, e.g. `20010901`)

  Taking into account the above, the directory then defaults to `<install-dir>/lib/php/extensions/ <debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO`, e.g. `/usr/local/php/lib/php/extensions/debug-non-zts-20010901` or `/usr/local/php/lib/php/extensions/no-debug-zts-20010901`.
&reftitle.returnvalues;

&return.success; If the functionality of loading modules is not available or has been disabled (by setting enable_dl off in &php.ini;) an `E_ERROR` is emitted and execution is stopped. If `dl` fails because the specified library couldn't be loaded, in addition to &false; an `E_WARNING` message is emitted.

&reftitle.examples;

### `dl` examples

    <?php
    // Example loading an extension based on OS
    if (!extension_loaded('sqlite')) {
        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
            dl('php_sqlite.dll');
        } else {
            dl('sqlite.so');
        }
    }

    // Or using PHP_SHLIB_SUFFIX constant
    if (!extension_loaded('sqlite')) {
        $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
        dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
    }
    ?>

&reftitle.notes;

`dl` is case sensitive on Unix platforms.

&reftitle.seealso;

- Extension Loading Directives
- `extension_loaded`