dl

Loads a PHP extension at runtime

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

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

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 has been removed from some SAPIs in PHP 5.3.

&reftitle.parameters;

`library`

- 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:\php4\extensions\` (PHP 4) or `C:\php5\` (PHP 5) 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 (experimental) 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 (either by setting enable_dl off or by enabling &safemode; 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, the PHP_SHLIB_SUFFIX constant is available as of PHP 4.3.0
    if (!extension_loaded('sqlite')) {
        $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
        dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
    }
    ?>

&reftitle.changelog;

&Version; | &Description;
5.3.0 | `dl` is now disabled in some SAPIs due to stability issues. The only SAPIs that allow `dl` are CLI and Embed. Use the Extension Loading Directives instead.

&reftitle.notes;

`dl` is not supported when PHP is built with ZTS support. Use the Extension Loading Directives instead.

`dl` is case sensitive on Unix platforms.

¬e.sm.disabled;
&reftitle.seealso;

- Extension Loading Directives
- `extension_loaded`