dl
(PHP 4, PHP 5, PHP 7, PHP 8)
dl — Belirtilen PHP eklentisini çalışma anında yükler
Açıklama
dl(string $eklenti
): bool
Belli bir eklentinin yüklü olup olmadığını sınamak için, hem yerleşik
(php.ini ile yüklenen) hem de devingen olarak (dl()
ile) yüklenen eklentileri bulan extension_loaded()
işlevini kullanın.
Uyarı
Bu işlev komut satırından çağrıldığında yalnızca CGI
SAPI, gömülü SAPI'ler ve
CLI için kullanılabilir.
Bağımsız Değişkenler
-
eklenti
-
Bu bağımsız değişken ile eklentinin platforma özgü kütüphane dosyasının ismi
belirtilir. Örneğin sockets
eklentisini Windows platformunda yüklemek için
php_sockets.dll ismini kullanmak gerekirken Unix
platformlarında sockets.so kullanmak gerekir (bir
paylaşımlı modül olarak derlenmişse).
Eklentinin yükleneceği dizin platforma göre değişiklik gösterir:
Windows - php.ini içinde açıkça belirtilmemişse, eklenti öntanımlı
olarak c:\php5\ dizininden yüklenir.
Unix - php.ini içinde açıkça belirtilmemişse, öntanımlı eklenti
dizinin yeri şunlara bağlıdır:
-
PHP'nin
--enable-debug
seçeneği ile derlenip
derlenmediği;
-
PHP'nin ZTS (Zend Thread Safety) desteği ile derlenip
derlenmediği;
-
geçerli yerleşik
ZEND_MODULE_API_NO
sabiti (Zend
yerleşik modülü API numarası; genelde API modülünün değişiklik
tarihidir. 20010901
gibi).
Bu durumlar hesaba katılarak eklentilerin öntanımlı yeri şöyle
saptanır: <kurulum-dizini>/lib/php/extensions/
<debug/no-debug>-<zts/non-zts>-ZEND_MODULE_API_NO
.
Örnek:
/usr/local/php/lib/php/extensions/debug-non-zts-20010901 veya
/usr/local/php/lib/php/extensions/no-debug-zts-20010901.
Dönen Değerler
Başarı durumunda true
, başarısızlık durumunda false
döner. Eğer modül yükleme işlevsel değilse
(php.ini içinde enable_dl
off yapılarak iptal edilmişse) bir E_ERROR
iletisi
çıktılanıp çalışma durdurulur. Eğer işlev, kütüphane yüklenemediğinden
dolayı başarısız olursa bir E_WARNING
iletisi
çıktılayarak false
döndürür.
Örnekler
Örnek 1 - dl() örnekleri
<?php
// Platforma göre eklenti yüklemek
if (!extension_loaded('sqlite')) {
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
dl('php_sqlite.dll');
} else {
dl('sqlite.so');
}
}
// veya PHP_SHLIB_SUFFIX sabiti de kullanılabilir
if (!extension_loaded('sqlite')) {
$prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
}
?>
Notlar
Bilginize:
dl() Unix platformlarında harf büyüklüğüne duyarlıdır.