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.


반환 값

성공하면 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 플랫폼에서 대소문자를 구분합니다.


기타