(PHP 4, PHP 5, PHP 7)
dl — 実行時に PHP 拡張モジュールをロードする
$library
) : bool
library
で指定された PHP 拡張モジュールを読み込みます。
その拡張モジュールが既に使用可能かどうかを調べるには、 extension_loaded() を使用します。 これは、組み込みのモジュールと (php.ini か、あるいは dl() を使用して) 動的に読み込むモジュールの両方に対応しています。
この関数は、PHP 5.3 以降で大半の SAPI からは削除されました。 また、PHP 7.0.0 では PHP-FPM からも削除されました。
library
このパラメータに指定できるのは拡張モジュールの ファイル名だけであり、それはプラットフォームに依存します。 例えば、Unix プラットフォームでは sockets 拡張モジュール (共有モジュールとしてコンパイルされていれば。デフォルトでは有りません!) は sockets.so と呼ばれていますし、一方 Windows プラットフォームでは php_sockets.dll と呼ばれます。
拡張モジュールを読み込むディレクトリは、プラットフォームによって異なります。
Windows - php.ini に明記されていない場合、デフォルトでは 拡張モジュールは、C:\php5\ からロードされます。
Unix - php.ini に明記されていない場合、デフォルトでは 以下に依存します。
成功した場合に TRUE
を、失敗した場合に FALSE
を返します。
拡張モジュールのロード機能が無効だったり、あるいは
無効化されている(enable_dl でオフにされているか
または php.ini で セーフモード が有効になっている)場合は、
E_ERROR
を発行して実行は停止されます。
指定されたライブラリをロードできず dl() が
失敗した場合、FALSE
に加えて E_WARNING
メッセージが
発行されます。
例1 dl() の例
<?php
// OS によってロードするファイルを切り替える
if (!extension_loaded('sqlite')) {
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
dl('php_sqlite.dll');
} else {
dl('sqlite.so');
}
}
// または PHP_SHLIB_SUFFIX 定数を使用
if (!extension_loaded('sqlite')) {
$prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
}
?>
バージョン | 説明 |
---|---|
7.0.0 | dl() が PHP-FPM で無効になりました。 |
5.3.0 | dl() がいくつかの SAPI で無効になりました。 安定性に問題があったためです。 現在 dl() が使える SAPI は CLI と Embed(組み込み) だけです。 かわりに 拡張モジュール読み込みディレクティブ を使ってください。 |
注意:
dl() は、ZTS サポートつきでビルドされた PHP ではサポートされていません。かわりに 拡張モジュール読み込みディレクティブ を使ってください。
注意:
dl() は Unix プラットフォーム上では 大文字小文字を区別します。
注意: この関数は、PHP が safe-mode で動作している場合は無効となります。