dl

(PHP 3, PHP 4 , PHP 5)

dl -- 実行時にPHP拡張モジュールをロードする

説明

int dl ( string library)

libraryで指定されたPHP拡張モジュールを ロードします。 libraryに指定できるのは拡張モジュール のファイル名だけであり、それはプラットフォーム に依存します。例えば、Unixプラットフォームでは sockets拡張モジュール (共有モジュールとしてコンパイルされていれば。デフォルトでは有りません!) はsockets.soと呼ばれていますし、一方Windows プラットフォームではphp_sockets.dllと呼ばれます。

成功した場合に TRUE 、失敗した場合に FALSE を返します。 拡張モジュールのロード機能が無効(注意書き参照)だったり、あるいは 無効化されている(enable_dlでオフにされているか またはphp.iniセーフモードが有効になっている)場合は、 E_ERRORを発行して実行は停止されます。 指定されたライブラリをロードできずdl()が 失敗した場合、FALSEに加えてE_WARNINGメッセージが 発行されます。

extension_loaded()で、指定された拡張モジュールが 既に有効かどうか調べることができます。ビルトインの拡張モジュールと 動的なものと両方を調べることができます。(php.iniで指定されたものも dl()でロードされたものも)

例 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 - php.iniに明記されていない場合、デフォルトでは 拡張モジュールはc:\php4\extensions\から ロードされます。

Unix - php.iniに明記されていない場合、デフォルトでは 以下に依存します。

上記を考慮して、ディレクトリのデフォルトは <install-dir>/lib/php/extensions/ <debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NOとなる。 例: /usr/local/php/lib/php/extensions/debug-non-zts-20010901 または /usr/local/php/lib/php/extensions/no-debug-zts-20010901.

注意: dl()はマルチスレッドWebサーバ上では サポートされません。 そのような環境の場合にはphp.ini上でextensions 命令を使用するようにしてください。しかし、CGICLIには 影響しません!

注意: dl()はUNIXプラットフォーム上では 大文字小文字を区別します。

Extension Loading Directives extension_loaded()も参照してください。