dl

Carica un estensione PHP a runtime

bool dl(string $library)

Carica l'estensione PHP fornita dal parametro library.

Si può utilizzare extension_loaded per testare se un dato modulo è già disponibile oppure no. Questo funziona sia sulle estensioni integrate sia su quelle caricate dinamicamente (tramite php.ini oppure dl).

Attenzione: Questa funzione è stata rimossa dalla maggior parte dei SAPI in PHP 5.3.0, ed è stata rimossa da PHP-FPM in PHP 7.0.0.

library Il parametro indica soltanto il nome del file dell' estensione da caricare che può dipendere dalla piattaforma utilizzata. Ad esempio, l'estensione sockets (se compilata come modulo condiviso, non il default!) sulle piattaforme Unix si chiamerebbe sockets.so, mentre su quelle Windows si chiamerebbe php_sockets.dll. La directory da cui viene caricata l'estensione dipende dalla piattaforma: Windows - Se non viene impostato esplicitamente nel php.ini, di default l'estensione viene caricata da C:\php5\. Unix - Se non viene impostato esplicitamente nel php.ini, di default la directory dell'estensione dipende da se PHP è stato compilato con --enable-debug o meno se PHP è stato compilato con il supporto (sperimentale) a ZTS (Zend Thread Safety) o meno la costante interna ZEND_MODULE_API_NO (numero API del modulo interno Zend, che è fondamentalmente la data in cui è avvenuta un'importante modifica all'API del modulo, ad esempio 20010901) Tenendo conto di quanto sopra, la directory viene quindi impostata di default a Ltinstall-dirGt/lib/php/extensions/ Ltdebug-or-notGt-Ltzts-or-notGt-ZEND_MODULE_API_NO, per esempio /usr/local/php/lib/php/extensions/debug-non-zts-20010901 oppure /usr/local/php/lib/php/extensions/no-debug-zts-20010901.

Return success Se la funzionalità di carico dei moduli non è disponibile oppure è stata disabilitata (disattivando enable_dl nel php.ini), viene generato un E_ERROR e viene bloccata l'esecuzione. Se dl fallisce perché non riesce a caricare la libreria indicata, oltre a restituire false, viene emesso un messaggio E_WARNING.

Esempi di dl <?php // Esempio di caricamento di un'estensione in base al sistema operativo if (!extension_loaded('sqlite')) { if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { dl('php_sqlite.dll'); } else { dl('sqlite.so'); } } // O usando la costante PHP_SHLIB_SUFFIX if (!extension_loaded('sqlite')) { $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : ''; dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX); } ?>

Nota: dl non è supportata quando PHP è compilato con il supporto ZTS. Utilizzare invece le Direttive sul Caricamento delle Estensioni.
Nota: dl è sensibile alle maiuscole sulle piattaforme Unix.