top

Описание функции dl



dl


(PHP 3, PHP 4)
dl - загружает РНР-расширение на этапе прогона.

Описание


bool dl (string library)
Загружает расширение PHP, заданное параметром library . Параметр library это только имя загружаемого файла расширения, которое также зависит от используемой платформы. Например, расширение sockets (если скомпилировано как shared-модуль, не по умолчанию!) может называться sockets.so на unix-платформах и php_sockets.dll - на платформах windows.
Возвращает TRUE при успехе, FALSE при неудаче . Если функциональность загружаемых модулей недоступна (см. Примечания) или отключена (через отключение enable_dl или включением safe_mode в php.ini ), возникает E_ERROR , и выполнение останавливается. Если dl() терпит неудачу из-за того, что специфицированная библиотека не может быть загружена, в дополнение к FALSE выдаётся сообщение E_WARNING .
Используйте extension_loaded() для проверки доступности расширения. Это работает и с встроенными, и с динамическими расширениями (через php.ini или dl() ).
Пример:


if (!extension_loaded('gd')) {
    if (!dl('gd.so')) {
        exit;
    }
}



Директория, из которой расширение загружается, зависит от вашей платформы:
Windows - если в php.ini не установлено явно, расширение по умолчанию загружается из c:\php4\extensions\ .
Unix - если в php.ini не установлено явно, директория по умолчанию расширения зависит от:

  • того, построен ли PHP с опцией --enable-debug , или нет

  • того, построен ли PHP с (экспериментальной) ZTS (Zend Thread Safety) поддержкой, или нет

  • текущего внутреннего ZEND_MODULE_API_NO (номера API внутреннего модуля Zend, который в основе представляет собой дату изменения главного модуля API, например, 20010901 )

Учитывая всё вышесказанное, по умолчанию директория будет <php-install-directory>/lib/php/extension/<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-серверах. Используйте в таком окружении оператор extensions в файле php.ini . Однако на построения как CGI и CLI это не влияет !

Примечание: dl() чувствительна к регистру на unix-платформах.

См. также Директивы загрузки расширений и extension_loaded() .
corner
My pencil ;)
Главная     Сервисы     Портфолио     Проги     Видео     Контакты     Ссылки     Текст