Функции PHP
»
dl
Версия: (PHP 4, PHP 5)
dl - Загружает PHP расширение во время выполнения Синтаксис: bool dl (string $library ) Параметры:library -
Этот аргумент содержит только имя файла расширения,
которое требуется загрузить. Это имя зависит от платформы. Например,
расширение sockets (если скомпилировано,
как загружаемый модуль, а не модуль по умолчанию!) будет называться
sockets.so на Unix платформах, и
php_sockets.dll в Windows среде.
Директория, из которой расширение должно быть загружено также зависит от
платформы:
Windows - Если явно не задано в php.ini, расширение будет грузиться из
C:php4extensions (PHP 4) или
C:php5 (PHP 5) по умолчанию.
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.
Внимание |
Эта функция удалена из некоторых SAPI в PHP 5.3.
|
Список изменений:
Версия |
Описание |
5.3.0 |
dl() выключен в некоторых SAPI в связи с нестабильностью
работы. Из SAPI, поддерживающих dl(), остались только
CLI и Embed. Используйте вместо dl
Директивы загрузки расширений.
|
|
Описание
Загружает PHP расширение заданное аргументом library.
Чтобы проверить, что заданное расширение уже загружено, используйте функцию
extension_loaded(). Эта функция работает как для встроенных
расширений, так и для динамически загруженных (т.е. загруженных как через
php.ini, так и через dl()).
Возвращаемые значения
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. Если механизм загрузки модулей недоступен или отключен
(либо значением off настройки php.ini enable_dl,
либо включен безопасный режим в php.ini), будет выдана ошибка
E_ERROR, и выполнение будет остановлено. Если
dl() не сможет загрузить заданную библиотеку, то в дополнение
к FALSE будет выдано сообщение E_WARNING.
Примеры:
Пример 1 Примеры использования dl()
PHP:
скопировать код в буфер обмена
// Пример загрузки расширения, основываясь на ОС } else { } } // Или на константе PHP_SHLIB_SUFFIX (доступна с PHP 4.3.0) $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : ''; dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX ); }
|
|
Замечание:
dl() не поддерживается в PHP собранных
с поддержкой ZTS. Используйте вместо dl
директивы загрузки расширений.
Замечание:
dl() чувствительна к регистру на Unix платформах.
Замечание: Эта функция недоступна в
безопасном режиме.
|