Bir PHP Eklentisinin Windows Kurulumu

Windows'ta bir PHP eklentisini yüklemenin iki yolu vardır: Ya eklenti PHP içinde derlenir ya da DLL olarak yüklenir. Derlenmiş bir eklentiyi yüklemek en kolay ve en çok tercih edilen yoldur.

Bir eklentiyi yüklemek için sistemde o eklentinin .dll dosyasının bulunması gerekir. Tüm eklentiler otomatik olarak belirli aralıklarla PHP Grubu tarafından derlenirler (bunları indirilmesi sonraki bölümde açıklanmıştır.

Bir eklentiyi PHP içinde derlemek için Kaynak kod paketinden derleme belgesine bakılabilir.

Bir eklentiyi tek başına (yani bir DLL olarak) derlemek için Kaynak kod paketinden derleme belgesine bakılabilir. Eğer DLL dosyası ne PHP dağıtımında ne de PECL sitesinde mevcutsa, eklentiyi kullanmaya başlamadan önce derlemek gerekebilir.

Bir eklenti nereden bulunur?

PHP eklentileri genellikle php_*.dll biçeminde isimlendirilir (yıldız iminin yerine eklentinin ismi gelir) ve PHP\ext dizini altında bulunur.

PHP, geliştiricilerin büyük çoğunluğunca en faydalı bulunan eklentilerle birlikte gelir. Bu tür paketlere toplu paket adı verilir.

Bununla birlikte, çekirdek eklentilerle sağlanmamış bir işlevselliğe ihtiyaç duyulursa, bunları edinmek için » PECL sitesinde bulunabilir. PHP Eklentileri Halk Kütüphanesi (PECL - PHP Extension Community Library) bir PHP Eklentileri deposu olup PHP eklentilerinin geliştirilmesi ve indirilmesi için barındırma oluşumlarını ve bilinen tüm eklentilerin bir dizinini içerir.

Kendi kullanımı için eklenti geliştirenler bu eklentinin PECL'de barındırılmasını isteyebilir, böylece ihtiyaçları aynı olan başkaları da bu eklentiden yararlanabilir. Bunun bazı olumlu yan etkileri de vardır: Geribildirim, teşekkür, hata bildirimi, hatta düzeltme ve yama alma şansı olur. Eklentiyi barındırılmak üzere PECL'ye göndermeden önce » PECL adresinin incelenmesi önerilir.

Hangi eklenti indirilecek?

Çoğu zaman her DLL'nin çok sayıda sürümü vardır:

  • Farklı sürüm numaraları (en azından ilk iki sayı tutmalı)
  • Farklı evre güvenceli olanlar
  • Farklı işlemciler için olanlar (x86, x64, ...)
  • Farklı hata ayıklama seçenekli olanlar
  • vs.

Şuna da dikkat edilmelidir: Eklenti ayarları kullanılan PHP çalıştırılabilirinin ayarları ile aynı olmalıdır. Aşağıdaki PHP betiği PHP ayarlarının tamamını içerecektir:

Örnek 1 - phpinfo() kullanımı

<?php
phpinfo
();
?>

Ya da komut satırından:

sürücü:\dizin\yolu\php\executable\php.exe -i

Bir eklentinin yüklenmesi

Bir PHP eklentisini yüklemenin en bilinen yolu eklentiyi php.ini dosyasına eklemektir. Dikkatle incelenirse php.ini dosyasında bir çok eklentinin zaten ekli olduğunu görülür. Eklentiyi etkin kılmak için yapılacak tek değişiklik eklentinin belirtildiği satırın başındaki noktalı virgülü silmek olacaktır.

PHP 7.2.0 ve üzeri sürümlerde, eklentinin dosya adı yerine eklenti adı da kullanılabilir. Bu işletim sisteminden bağımsız ve daha kolay olduğundan, özellikle yeni başlayanlar için, yüklenecek eklentileri belirlemenin önerilen yolu haline gelir. Dosya adları, önceki sürümlerle uyumluluk için desteklenmeye devam etmektedir.

;extension=php_eklenti.dll
extension=php_eklenti.dll
; PHP 7.2 ve sonrasında önerilen:
extension=eklenti
zend_extension=diğer_eklenti

Bununla birlikte, bazı HTTP sunucuları, PHP çalıştırılabilirinin yanına konmuş php.ini dosyasını kullanmadıklarından eklentiyi göremeyebilir. HTTP sunucusunun kullandığı php.ini dosyasının bulunduğu yer phpinfo() işlevi kullanılarak şöyle öğrenilebilir:

Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File         C:\Program Files\PHP\8.2\php.ini

Eklentiyi etkin kıldıktan sonra php.ini dosyası kaydedilmeli ve HTTP sunucusu yeniden başlatıldıktan sonra tekrar phpinfo() çıktısına bakılmalıdır. Yeni eklentinin artık kendi bölümünde görünüyor olması gerekir.

Sorunların çözümlenmesi

Eğer eklenti phpinfo() çıktısında görünmüyorsa sorunun kaynağını bulmak için günlük dosyalarına bakılmalıdır.

PHP, komut satırından kullanılıyorsa (CGI), eklenti yükleme hatası doğrudan ekranda görülebilir.

PHP bir HTTP sunucusu ile kullanılıyorsa günlük dosyalarının yeri ve biçemi kullanılan yazılıma göre değişir. Günlüklerin yerini bulmak için kullanılan HTTP sunucusunun belgelerine bakılmalıdır.

Sorunların çoğu DLL dosyasının ve bu dosyanın bağımlı olduğu DLL'lerin yeri ile ilgilidir. php.ini içindeki "extension_dir" yönergesinin değeri ile derleme sırasında yapılan ayarlar arasında bir tutarsızlık olabilir.

Eğer sorun derleme sırasında yapılan ayarlarla uyumsuzluktan kaynaklanıyorsa muhtemelen indirilen DLL dosyası doğru yere konulmamış demektir. Eklentinin doğru ayarlarla tekrar indirilmesi gerekebilir. Bu yapıldıktan sonra phpinfo() çıktısının tekrar incelenmesi uygun olacaktır.

add a note add a note

User Contributed Notes 3 notes

up
5
peteb at airpost dot net
3 years ago
This is not really true all the time:

"However, some web servers are confusing because they do not use the php.ini located alongside your PHP executable. To find out where your actual php.ini resides, look for its path in phpinfo():

Configuration File (php.ini) Path  C:\WINDOWS"

Ignore the path being C:\windows
This issue goes back over a decade. 
Php is hardwired to display "C:\windows" even though there is not any php.ini at that location. 
Moving php.ini to C:\windows will accomplish nothing. 
I have seen many posts about folks complaining that they can't get it to stop displaying "Path C:\windows".  I have not seen anything posted that fixes this and a few posts that claim it is hardwired to display this. 
I have both working and broken php setups on various windows machines and they all say this same "c:\windows" even though my php.ini file is in c:\php. 
I know apache is using the file c:\php\php.ini and not the windows directory because there is no php.ini in windows directory and changes to my php.ini file work fine even though the info from phpinfo is wrong on this line.
up
-2
Robert Dinion
5 years ago
For Windows try setting the  extension_dir set to a complete path if you have an error.
Only having
extension_dir ="ext"
did not work for me.
The Apache error log showed it looking for ext\\<extension.dll> and unable to find it.
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "C:\php\ext"
up
-4
Chris
5 years ago
In xampp. After removing the semicolon from the php.ini file, I had to stop the the apache server from the xampp GUI and restart it. Then I used the following code to view all the loaded extentions and my extension was shown there as well.

print_r(get_loaded_extensions());

Hope this helps!
To Top