(PHP 4, PHP 5)
dl — Carica i moduli del PHP a runtime
$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_OS, 0, 3) == '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
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().