dl

(PHP 3, PHP 4, PHP 5)

dl -- Loads a PHP extension at runtime

Description

int dl ( string library )

Loads the PHP extension given by the parameter library . The library 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.

如果成功则返回 TRUE ,失败则返回 FALSE 。 If the functionality of loading modules is not available (see Note) or has been disabled (either by turning it off enable_dl or by enabling 安全模式 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.

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() ).

The dl() function is deprecated as of PHP 5. Use Extension Loading Directives method instead.

例子 1. 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 );
}
?>

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\ by default.

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

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 .

注: dl() is not supported in multithreaded Web servers. Use the extensions statement in your php.ini when operating under such an environment. However, the CGI and CLI build are not affected !

注: dl() is case sensitive on Unix platforms.

注: 本函数在 安全模式 下被禁用。

See also Extension Loading Directives and extension_loaded() .