php-sqlsrv Kurulumu

PECL modüllerinin nereye yüklendiğini bul

Bu komut ile sqlsrv ve pdo_sqlsrv gibi modül dosyalarının sistemde nerelere kurulduğunu görebilirsin:

sudo find / -type f ( -name "sqlsrv.so" -o -name "pdo_sqlsrv.so" ) 2>/dev/null

Bu, sistemdeki tüm sqlsrv.so ve pdo_sqlsrv.so dosyalarının tam yolunu gösterir.

/usr/lib/php/20240924/sqlsrv.so
/usr/lib/php/20240924/pdo_sqlsrv.so

PHP'nin yüklü modül dizinini öğren

php -i | grep extension_dir

extension_dir => /usr/lib/php/20230831 => /usr/lib/php/20230831

    Not: Bu dizin PHP'nin hangi API versiyonuna göre derlendiğini de gösterir (20230831 gibi).

Eğer modül farklı dizinde ise, doğru yere kopyala

Farz edelim sqlsrv.so şurada:

/usr/lib/php/20240210/sqlsrv.so

Ama PHP'nin extension_dir dizini şu:

/usr/lib/php/20230831/

Bu durumda:

sudo cp /usr/lib/php/20240210/sqlsrv.so /usr/lib/php/20230831/
sudo cp /usr/lib/php/20240210/pdo_sqlsrv.so /usr/lib/php/20230831/

PHP modül olarak etkinleştir

Aşağıdaki dosyaları oluştur:

sudo nano /etc/php/8.3/mods-available/sqlsrv.ini

İçeriği:

extension=sqlsrv.so

Aynı şekilde:

sudo nano /etc/php/8.3/mods-available/pdo_sqlsrv.ini

İçeriği:

extension=pdo_sqlsrv.so

Modülü aktif et

sudo phpenmod sqlsrv
sudo phpenmod pdo_sqlsrv

Apache ya da PHP-FPM kullanıyorsan servisi yeniden başlat

sudo systemctl restart apache2
# veya
sudo systemctl restart php8.3-fpm

 

 

 

PHP Uzantıları Klasörü Yolu

PHP uzantılarının bulunduğu yerin tipik yolları şunlardır:

    Apache (CLI) için: /usr/lib/php/20230831/

    FPM için: /usr/lib/php/20230831/

    Ayrıca, /usr/lib/php/ içinde veya /usr/local/lib/php/ gibi dizinlerde de bulunabilir.

PHP'nin uzantılar dizinini öğrenmek için şu komutu kullanabilirsin:

php -i | grep extension_dir

Bu komut, PHP'nin uzantılarının bulunduğu dizini gösterecektir. Örneğin:

extension_dir => /usr/lib/php/20230831 => /usr/lib/php/20230831

 

Modüllerin Kurulumu

Eğer modüller doğru yerde değilse, PECL ile yeniden kurulum yapman gerekebilir.

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

  Yukarıdaki komutlar, modülleri doğru dizine yükleyecektir.

Hata oluşursa
sudo pecl install sqlsrv
pecl/sqlsrv requires PHP (version >= 8.1.0), installed version is 7.4.33
No valid packages found
install failed

  şunu söylüyor: sqlsrv uzantısının PECL sürümü en az PHP 8.1 gerektiriyor, fakat sizde PHP 7.4.33 kurulu.

 Sistemde birden fazla PHP sürümü yüklüyse, hangi sürümün varsayılan olarak kullanılacağını aşağıdaki adımlarla değiştirebilirsiniz.

sudo update-alternatives config php

 

Hata

compilation terminated.
make: *** [Makefile:208: conn.lo] Error 1
ERROR: make' failed

  Bu hata, pecl install sqlsrv komutu sırasında derleme (compilation) aşamasında bir sorun yaşandığını gösterir.

Çözüm

sudo apt update
sudo apt install unixodbc-dev gcc g++ make autoconf libc-dev pkg-config
sudo apt install php8.x-dev

Tekrar deneyin

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

 

 


Modülleri Manuel Olarak Taşıma

Eğer PECL yüklemesi başarılı olsa da, modüller yanlış dizine yüklenmişse, manuel olarak taşımayı deneyebilirsin.

sqlsrv kurulumu

Örneğin:

sudo cp /path/to/sqlsrv.so /usr/lib/php/20230831/
sudo cp /path/to/pdo_sqlsrv.so /usr/lib/php/20230831/

Yol, PHP'nin uzantılar diziniyle uyumlu olmalı.

 php.ini'ye Doğru Yolu Ekleme

Sonrasında, php.ini dosyasına şu satırları eklemelisin (PHP'nin uzantılar dizininde doğru dosya yolu olduğundan emin olduktan sonra):

extension=sqlsrv.so
extension=pdo_sqlsrv.so

5. Web Sunucusunu Yeniden Başlat

Web sunucusunu yeniden başlatmalısın:

sudo systemctl restart apache2       # Apache için
sudo systemctl restart php8.3-fpm    # PHP-FPM için

 

pdo_sqlsrv.so ve sqlsrv.so Modüllerini php.ini'ye Ekleme

PHP'nin php.ini dosyasını açarak, pdo_sqlsrv.so ve sqlsrv.so modüllerini eklemelisin. Örneğin:

sudo nano /etc/php/8.4/fpm/php.ini

Veya apache2 kullanıyorsan:

sudo nano /etc/php/8.4/apache2/php.ini

Bu dosyada, aşağıdaki satırları ekleyin veya varsa, doğru şekilde etkinleştirin:

extension=sqlsrv.so
extension=pdo_sqlsrv.so

 

veya

/etc/php/8.4/mods-available adresine gidip ini dosya oluştur (içinde zaten bunlar yazılı)

ini uzantılı bir dosya içine extensionu yazıyoruz.

sqlsrv kurulumu
sqlsrv kurulumu

sqlsrv kurulumu 

Modülleri aktif et

PHP modlarını etkinleştirmek için:

sudo phpenmod sqlsrv pdo_sqlsrv

 

 PHP-FPM veya Apache'yi Yeniden Başlatma

Yapılandırma dosyasındaki değişikliklerin geçerli olması için PHP-FPM veya Apache'yi yeniden başlatmalısın:

    PHP-FPM için:

sudo systemctl restart php8.4-fpm

 

    Apache için:

sudo systemctl restart apache2

 

PHP Modüllerini Kontrol Etme

Son olarak, modüllerin düzgün yüklenip yüklenmediğini kontrol etmek için şu komutu çalıştır:

php -m | grep sqlsrv

 

 

 

Makefile sqlsrv.la Error 1

php-sqlsrv Kurulumu
If you are getting this error while trying to install Microsoft Drivers for PHP for SQL server

sudo pecl install sqlsrv 
sudo pecl install pdo_sqlsrv

you should do the following:

First:

Inspect this folder /usr/lib/x86_64-linux-gnu/ and verify that the following file exists: libltdl.la

Second:

If the file does not exist, just run the following command to create a blank file:

touch /usr/lib/x86_64-linux-gnu/libltdl.la

Try to run the pecl command again

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

Third:

If the issue still persists, create a new file and copy the following content to it:
https://www.apt-browse.org/browse/debian/jessie/main/amd64/libltdl-dev/2.4.2-1.11+b1/file/usr/lib/x86_64-linux-gnu/libltdl.la
and try to install the sqlsrv and pdo_sqlsrv again.
then verify that you can see the pdo_sqlsrv module by running:

php -m

Reference
Linux and macOS Installation Tutorial for the Microsoft Drivers for PHP for SQL Server

 

Kaynak

Yükleniyor...
Yükleniyor...