Учебник РНР (перевод Alexandr Pyramidin) Размещено на PHPClub.Net
Назад Вперёд

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().


НазадОглавление Вперёд
assert Вверхextension_loaded