PHP ile yazılmış uygulamalarda SQL Server Bağlantısı İçin Gerekli Kurulumlar (Ubuntu 18.04 LTS Bionic)

PHP ile yazılmış uygulamalarda SQL Server Bağlantısı İçin Gerekli Kurulumlar (Ubuntu 18.04 LTS Bionic)

Çalışmakta olduğum firmanın ERP ve Otomasyon yazılımlarının veri tabanı kısmı MSSQL ile yürütülmekteydi. Üzerinde çalıştığım proje web taraflı olacaktı ve bunun için PHP kullanacaktım ancak MSSQL ile bağlantı sağlamak için PHP içerisinde hali hazırda bir modül yoktu. Bu durumla daha önce de karşılaşmıştım ve çözümü gayet basit sevgili arkadaşlar. 

Benim kullandığım Linux serverim Ubuntu 18.04 Bionic. Server üzerinden yayını NGINX ve PHP7.2 ile yapmaktayım. Aşağıda belirteceğim kurulum ayarları APACHE için farklılık gösterebilir. Ben kendi yapılandırmama istinaden açıklamaya başlıyorum.

Öncelikle ODBC için gerekli paket depolarının tanımını yapıyoruz ;

sudo su  
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -  

# Ubuntu 18.04
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list  
exit 

Şimdi paket depolarımızı güncelleyelim ve EULA koşullarını kabul ettiğimizi belirterek ODBC kuruluma geçelim ;

sudo apt-get update 
sudo ACCEPT_EULA=Y apt-get install msodbcsql17 

ODBC için dev ve mssql tools kurulumunu yapalım ;

sudo apt-get install unixodbc-dev mssql-tools

PHP için gerekli SQL Driverlarını İndiriyoruz;

sudo apt-get -y install php-pear php7.2-dev
sudo pecl install sqlsrv 
sudo pecl install pdo_sqlsrv

Driver dosyalarını PHP içerisine dahil ediyoruz ;

sudo su 
echo "extension=sqlsrv.so" > /etc/php/7.2/mods-available/sqlsrv.ini
echo "extension=pdo_sqlsrv.so" > /etc/php/7.2/mods-available/pdo_sqlsrv.ini
exit

PHP cli için sql server eklentisini aktif hale getirmek için aşağıdaki komutları uyguluyoruz ;

sudo ln -s /etc/php/7.2/mods-available/sqlsrv.ini /etc/php/7.2/cli/conf.d/20-sqlsrv.ini
sudo ln -s /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/cli/conf.d/20-pdo_sqlsrv.ini

Son olarak FPM için de sql server eklentilerini aktif hale getiriyoruz;

sudo ln -s /etc/php/7.2/mods-available/sqlsrv.ini /etc/php/7.2/fpm/conf.d/20-sqlsrv.ini
sudo ln -s /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/fpm/conf.d/20-pdo_sqlsrv.ini

Evet işlemleri başarılı bir şekilde tamamladıysanız sıra geldi yaptığımız değişiklikleri aktif hale getirmeye bunun için aşağıdaki komutu uygulayarak NGINX'i yeniden başlatıyoruz.

sudo service nginx restart

Bir kaç saniye bakleyin ve ardından PHP ile MSSQL bağlantınızı test edebilirsiniz.

Bağlantı testini yapabilmeniz için şuraya küçük bir betik bırakayım.

$serverName = "Server Adresi"; 
$connectionOptions = [
    "Database" => "Veritabanı",
    "Uid" => "Kullanıcı Adı",
    "PWD" => "Şifre"
]; 

$conn = sqlsrv_connect($serverName, $connectionOptions);
//Query çalıştıralım.
$getResults= sqlsrv_query($conn, "SELECT @@Version as SQL_VERSION");

Eğer yaptığınız işlemler sırasında bir sorun ile karşılaşırsanız çekinmeden yorum bölümünü kullanarak soru sorabilirsiniz. Bulduğum ilk fırsatta seve seve yardımcı olacağım. İyi ve sağlıklı günler dilerim.