(PHP 4, PHP 5, PHP 7, PHP 8)
dl — Carica un estensione PHP a runtime
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()).
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
--enable-debug
o meno
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
)
<install-dir>/lib/php/extensions/ <debug-or-not>-<zts-or-not>-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.
Restituisce true
in caso di successo, false
in caso di fallimento. 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
.
Example #1 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.