dl
(PHP 4, PHP 5, PHP 7, PHP 8)
dl — 런타임에 PHP 확장을 로드합니다.
설명
dl(string $extension_filename
): bool
extension_filename
매개변수에 의해 제공된 PHP 확장을 로드합니다.
주어진 확장이 이미 사용 가능한지 여부를 테스트하려면 extension_loaded()를 사용하십시오. 이것은 내장 확장과 동적으로 로드된 확장(php.ini 또는 dl()을 통해) 모두에서 작동합니다.
경고 이 함수는 PHP 5.3.0의 대부분의 SAPI에서 제거되었으며 PHP 7.0.0의 PHP-FPM에서 제거되었습니다.
매개변수
extension_filename
- 이 매개변수는 로드할 확장의 파일 이름일 뿐이며 플랫폼에 따라 다릅니다. 예를 들어 소켓 확장(기본값이 아닌 공유 모듈로 컴파일된 경우)은 Unix 플랫폼에서는 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
(기본적으로 주요 모듈 API 변경이 발생한 날짜인 Zend 내부 모듈 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
를 반환합니다. 모듈을 로드하는 기능을 사용할 수 없거나 비활성화된 경우(php.ini에서 enable_dl을 해제하여) E_ERROR
가 발생하고 실행이 중지됩니다. 지정된 라이브러리를 로드할 수 없어 dl()이 실패하면 false
외에 E_WARNING
메시지가 방출됩니다.
Examples
예제 #1 dl() 예제
<?php
// Example loading an extension based on OS
if (!extension_loaded('sqlite')) {
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
dl('php_sqlite.dll');
} else {
dl('sqlite.so');
}
}
// Or using PHP_SHLIB_SUFFIX constant
if (!extension_loaded('sqlite')) {
$prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
}
?>
노트
메모: dl()은 PHP가 ZTS 지원으로 빌드된 경우 지원되지 않습니다. 대신 확장 로드 지시문을 사용하십시오.
메모: dl()은 Unix 플랫폼에서 대소문자를 구분합니다.
기타
- Extension Loading Directives
- extension_loaded() - 확장이 로드되었는지 확인