PHP Opzioni/Info
PHP Manual

dl

(PHP 4, PHP 5)

dl — Carica i moduli del PHP a runtime

Descrizione

int dl ( string $library )

La funzione carica il modulo di PHP passato nel parametro library . Il parametro library indica soltanto il nome del file del modulo da caricare il quale può dipendere dal piattaforma utilizzata. Ad esempio il modulo sockets (se compilato come modulo condiviso, non è il default!) sulle piattaforme Unix si chiama sockets.so, mentre in Windows si chiama php_sockets.dll.

Restituisce TRUE in caso di successo, FALSE in caso di fallimento. Se la funzionalità di carico dei moduli non è disponibile (vedi note), oppure è stata disabilitata (sia disabilitando enable_dl oppure attivando modalità sicura nel php.ini), sarà generato un E_ERROR e sarà bloccata l'esecuzione dello script. Se dl() fallisce perché non riesce a caricare la libreria indicata, oltre a restituire FALSE verrà generato un messaggio di tipo E_WARNING.

Si può utilizzare extension_loaded() per testare se un modulo è veramente affidabile o meno. Questa funzione si applica sia a moduli built-in sia ai moduli caricati (tramite php.ini oppure dl()).

La funzione dl() è deprecata dal PHP 5. Piuttosto utilizzare Parametri per il carico dei moduli.

Example#1 Esempio di uso di dl()

<?php
// Caricare un modulo in base al sistema operativo
if (!extension_loaded('sqlite')) {
    if (
strtoupper(substr(PHP_OS03) == 'WIN')) {
        
dl('php_sqlite.dll');
    } else {
        
dl('sqlite.so');
    }
}

// Oppure la costante PHP_SHLIB_SUFFIX disponibile da 4.3.0
if (!extension_loaded('sqlite')) {
    
$prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' '';
    
dl($prefix 'sqlite.' PHP_SHLIB_SUFFIX);
}
?>

La directory da cui vengono caricate le estensioni dipende dal sistema operativo della macchina:

Windows - Se non viene impostato esplicitamente nel php.ini, i moduli sono caricati da c:\php4\extensions\ .

Unix - Se non viene impostato esplicitamente nel php.ini, la directory di default dipenda da

Quindi considerando quanto detto, la directory di default può essere <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 oppure /usr/local/php/lib/php/extensions/no-debug-zts-20010901.

Nota: La funzione dl() non è supportata dai web server multithread. Utilizzare il parametro del php.ini extensions quando si debba utilizzare tali server. Mentre le versioni CGI e CLI non hanno questa limitazione.

Nota: La dl() è sensibile alla maiuscole sulle piattaforme Unix.

Nota: Questa funzione è disabilitata nella modalitàsafe-mode

Vedere anche Direttive per il carimaneto dei moduli e extension_loaded().


PHP Opzioni/Info
PHP Manual