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