Manuale PHP
Indietro |  | Avanti

# dl

(PHP 3, PHP 4, PHP 5)

dl -- Carica i moduli del PHP a runtime

## Descrizione

int dl ( string 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.

Esempio 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

- se il PHP è stato compilato con --enable-debug o meno

- se il PHP è stato compilato con (versione sperimentale) ZTS (Zend Thread Safety) o meno

- il valore attuale di ZEND_MODULE_API_NO (numero interno del modulo API Zend, il quale indica la data in cui si sono apportate le maggiori modifiche al modulo, ad esempio 20010901)

Quindi considerando quanto detto, la directory di default può essere <install-dir>/lib/php/extensions/ <debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO, `/usr/local/php/lib/php/extensions/debug-non-zts-20010901` oppure `/usr/local/php/lib/php/extensions/no-debug-zts-20010901`.

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

Indietro | Partenza | Avanti
assert | Risali | extension_loaded