PHP kézikönyv
Előző |  | Következő

# dl

(PHP 3, PHP 4, PHP 5)

dl -- egy PHP kiterjesztés betöltése futásidőben

## Leírás

int dl ( string library )

Betölti azt a PHP kiterjesztést, amit a library paraméterben adtál meg. A library paraméter a betöltendő kiterjesztésnek csak a fájlneve, ami függ a platformtól is. Például a sockets kiterjesztés (ha megosztott modulként volt fordítva, ami nem alapértelmezett) Unix platformokon `sockets.so`, míg Windows-on `php_sockets.dll`.

Siker esetén `TRUE` értékkel tér vissza, ellenkező esetben `FALSE` értéket ad. Ha a modulbetöltés nem lehetséges (lásd a megjegyzést) vagy nem engedélyezett (a enable_dl ki van kapcsolva vagy a safe mode be van kapcsolva a `php.ini`-ben), akkor egy `E_ERROR` szintű hiba keletkezik és a szkript futása megszakad. Ha a dl() függvény végrehajtása sikertelen mert a megadott könyvtárat nem lehet betölteni, a függvény `FALSE`-ot ad vissza és dob egy `E_WARNING` szintű hibát.

Hogy egy kiterjesztésről megtudd, hogy be van-e töltve vagy sem, használd az extension_loaded() függvényt. Ez működik a beépített és a dinamikusan betöltött kiterjesztésekre is (mind a `php.ini`-vel mind a dl() függvénnyel betöltöttekre igaz).

A dl() függvény használata a PHP 5-től kezdve ellenjavallt. Helyette használd a kiterjesztés betöltő direktívák módszerét.

Példa 1. dl() példák
`<?php // Kiterjesztés betöltése oprendszertől függően if (!extension_loaded('sqlite')) { if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { dl('php_sqlite.dll'); } else { dl('sqlite.so'); } } // A PHP 4.3.0 a PHP_SHLIB_SUFFIX konstans is rendelkezésre áll if (!extension_loaded('sqlite')) { $prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : ''; dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX); } ?>`

A könyvtár ahonnan a kiterjesztést be lehet tölteni, platformtól függő:

Windows - Ha nincs explicite megadva a `php.ini`-ben, akkor a kiterjesztés a `c:\php4\extensions\` könyvtárból töltödik be.

Unix - Ha nincs explicite megadva a `php.ini`-ben, az alapértelmezett kiterjesztés könyvtár függ a következőktől:

- a PHP --enable-debug-gal lett-e fordítva vagy sem

- a PHP (a kisérleti jellegű) ZTS (Zend Thread Safety) támogatással lett-e fordítva vagy sem

- az aktuális belső ZEND_MODULE_API_NO (Zend belső API modul szám, ami alapjában az a dátum, amikor az API modulban nagyobb változtatás történt, pl. 20010901)

A fenti figyelembevételével, a könyvtár alapértelmezett értéke: <install-dir>/lib/php/extensions/ <debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO, pl. `/usr/local/php/lib/php/extensions/debug-non-zts-20010901` vagy `/usr/local/php/lib/php/extensions/no-debug-zts-20010901`.

> Megjegyzés: A dl() nem támogatott a többszálas webszervereken. Használd az extensions utasítást a `php.ini`-ben, amikor ilyen környezetben dolgozol. A CGI és a CLI verziók nem érintettek!

> Megjegyzés: A dl() Unix platformokon különbséget tesz kis- és nagybetűk között.

> Megjegyzés: Ez a függvény nem használható, ha a safe mode be van kapcsolva.

Lásd még a kiterjesztés betöltő direktívákat és az extension_loaded() függvényt.

Előző | Tartalom | Következő
assert | Fel | extension_loaded