PHP マニュアル
前のページ |  | 次のページ

# 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`に明記されていない場合、デフォルトでは 以下に依存します。

- PHPをビルドする際に--enable-debugを指定しているか否か

- PHPをビルドする際に(実験段階の)ZTS (Zend Thread Safety)サポートを 有効にしているか否か

- 現在のZEND_MODULE_API_NO(Zend 内部モジュール API番号。基本的にはメジャーモジュールAPIの変更が発生した日時。 例:20010901)

上記を考慮して、ディレクトリのデフォルトは <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 命令を使用するようにしてください。しかし、CGIや CLIには 影響しません!

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

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

前のページ | ホーム | 次のページ
assert | 上に戻る | extension_loaded