dl
(PHP 4, PHP 5, PHP 7, PHP 8)
dl — Carica un estensione PHP a runtime
Descrizione
dl(string $library
): bool
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()).
Avviso
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.
Elenco dei parametri
-
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
<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.
Valori restituiti
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
.
Esempi
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);
}
?>