(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().