dl
(PHP 4, PHP 5, PHP 7)
dl — 実行時に PHP 拡張モジュールをロードする
説明
dl
( string $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
に明記されていない場合、デフォルトでは 以下に依存します。-
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
.-
PHP をビルドする際に
返り値
成功した場合に true
を、失敗した場合に false
を返します。
拡張モジュールのロード機能が無効だったり、あるいは
無効化されている(enable_dl でオフにされている)場合は、
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);}?>
注意
注意:
dl() は、ZTS サポートつきでビルドされた PHP ではサポートされていません。かわりに 拡張モジュール読み込みディレクティブ を使ってください。
注意:
dl() は Unix プラットフォーム上では 大文字小文字を区別します。