dl
(PHP 4, PHP 5)
dl — egy PHP kiterjesztés betöltése futásidőben
LeÃrás
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.
Example#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)
Note: 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!
Note: A dl() Unix platformokon különbséget tesz kis- és nagybetűk között.
Note: 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.