To create a dll extension to
PHP follow this instructions:
http://blog.slickedit.com/2007/09/creating-a-php-5-extension-with-visual-c-2005/
*****IMPORTANT
1)You MUST use the last release of PHP source code, or people will not me able to use your extension. Don't worry to use only the version of the tutorial.
2) The folder "regex" exists in PHP 5.3, just find it in the subfolders.
3)While building your dll in Visual Studio, if you have any problem compiling or linking like: "winsock2.h is missing", find the files on your computer and include the project in the same way that the tutorial taught.
Bir PHP Eklentisinin Windows Kurulumu
Windows'ta bir PHP eklentisini yüklemenin iki yolu vardır: Ya eklentiyi PHP içinde derlersiniz ya da DLL olarak yüklersiniz. Derlenmiş bir eklentiyi yüklemek en kolay ve en çok tercih edilen yoldur.
Bir eklentiyi yüklemek için sisteminizde o eklentinin ".dll" dosyasının bulunması gerekir. Tüm eklentiler özdevinimli olarak belirli aralıklarla PHP Grubu tarafından derlenirler (bunları indirmek için sonraki bölüme bakınız).
Bir eklentiyi PHP içinde derlemek için Kaynak kod paketinden derleme belgesine bakınız.
Bir eklentiyi tek başına (yani bir DLL olarak) derlemek için Kaynak kod paketinden derleme belgesine bakınız. Eğer DLL dosyası ne PHP dağıtımınızda ne de PECL sitesinde mevcutsa, eklentiyi kullanmaya başlamadan önce derlemek zorunda kalabilirsiniz.
Bir eklenti nereden bulunur?
PHP eklentileri genellikle "php_*.dll" biçeminde isimlendirilirler (yıldız iminin yerine eklentinin ismi gelir) ve "PHP\ext" (PHP 4'te "PHP\extensions") dizini altında bulunurlar.
PHP, geliştiricilerin büyük çoğunluğunca en faydalı bulunan eklentilerle birlikte gelir. Bunlara "çekirdek" eklentiler adı verilir.
Bununla birlikte, çekirdek eklentilerle sağlanmamış bir işlevselliğe ihtiyaç duyarsanız, PECL sitesinde bakabilirsiniz. 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ınız için bir eklenti geliştiriyorsanız PECL'de barındırılmasını isteyebilirsiniz, böylece ihtiyaçları aynı olan başkaları da eklentinizden yararlanabilir. Bunun bazı olumlu yan etkileri de vardır: Geribildirim, teşekkür, hata bildirimi, hatta düzeltme ve yama alma şansınız olur. Eklentinizi barındırılmak üzere PECL'ye göndermeden önce lütfen http://pecl.php.net/package-new.php adresini ziyaret ediniz.
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.
Şunu aklınızdan çıkarmayın: Eklenti ayarlarınız kullandığınız PHP çalıştırılabilirinin ayarları ile aynı olmalıdır. Aşağıdaki PHP betiği PHP ayarlarınızın tamamını size söyleyecektir:
Örnek 1 phpinfo() kullanımı
<?php
phpinfo();
?>
Ya da komut satırından şunu çalıştırın:
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. Dikkatli incelerseniz php.ini dosyanızda bir çok eklentinin zaten ekli olduğunu görürsünüz. Eklentiyi etkin kılmak için tek yapacağınız eklentinin belirtildiği satırın başındaki noktalı virgülü silmek olacaktır.
;extension=php_eklenti.dll
extension=php_eklenti.dll
Bununla birlikte, bazı HTTP sunucuları, PHP çalıştırılabilirinin yanına konmuş php.ini dosyasını kullanmadıklarından eklentinizi göremeyebilirler. HTTP sunucunuzun kullandığı php.ini dosyasının bulunduğu yeri phpinfo() işlevini kullanarak öğrenebilirsiniz:
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\Program Files\PHP\5.2\php.ini
Eklentiyi etkin kıldıktan sonra php.ini dosyanızı kaydedin ve HTTP sunucunuzu yeniden başlattıktan sonra tekrar phpinfo() çıktısına bakın. Yeni eklentiyi artık kendi bölümünde görüyor olmanız 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ınıza bakmalısınız.
PHP'yi komut satırından kullanıyorsanız (CGI), eklenti yükleme hatasını doğrudan ekranda görebilirsiniz.
PHP'yi bir HTTP sunucusu ile kullanıyorsanız günlük dosyalarının yeri ve biçemi kullandığınız yazılıma göre değişir. Günlüklerin yerini bulmak için kullandığınız HTTP sunucusunun belgelerine bakınız.
Sorunların çoğu DLL dosyasının 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 indirdiğiniz DLL dosyasını doğru yere koymamışsınız demektir. Eklentiyi doğru ayarlarla tekrar indirmeyi deneyin. Bunu yaptıktan sonra tekrar phpinfo() çıktısına bakmayı unutmayın.
In response to soazine:
I've found, using wampserver, that the only configuration file that needs to be edited is the one listed under "Loaded Configuration File" given by phpinfo(). Those for whom this doesn't work should refer to soazine's steps.
This is the only way to get PECL extensions - using the command line installer (similar to the PEAR installer) does not work on Windows...
This does not look like its going to be fixed any time soon...
Also, you should look at http://pecl4win.php.net/ for Windows PECL extensions.
When using PHP 5.2.0 within WinXP via Wampserver ( http://www.en.wampserver.com/download.php ) you will find that just simply adding a PECL-based DLL file into php.ini is not enough. Steps you will have to do to ensure that your PECL extension(s) will be recognized are as follows:
1) Have the DLL referenced within PHP's php.ini ("extension=[php_name-of-PECL-extension].dll")
2) Have the DLL referenced within Windows' php.ini
3) Have the DLL within wampserver.ini
If any of these steps are not included, alongside the obvious web services restart, then PECL is not recognized.
