Ubuntu PHP 7.2’de Microsoft SQL Server için PHP sürücü kurulumu

PHP 7.2 çalıştıran Ubuntu 18.04 sunucusunda PHP için Microsoft SQL Server modülünü kurmak istiyoru. SQL sunucusu için PHP modülünü adresinde bulabilirsiniz.

https://github.com/microsoft/msphpsql

Bu PHP modülü yazıldığı sırada yalnızca PHP 7.4 ve daha yeni sürümleri desteklemektedir. Bu yüzden PHP 7.2’yi destekleyen eski bir sürümü bulmamız gerekiyor. Sürüm sayfasını kontrol ederken, 5.8.0 sürümünün PHP 7.2’yi desteklediğini gördük

İlk önce php7.2 dev paketini şu şekilde kurun:

apt install php7.2-dev

pcel ile php modüllerini kurun

pecl install sqlsrv-5.8.0

Kurulum sırasında hata aldık

configure: creating ./config.status
config.status: creating config.h
config.status: executing libtool commands
running: make
/bin/bash /tmp/pear/temp/pear-build-rootnuxjAy/sqlsrv-5.8.0/libtool –mode=compile g++ -std=c++11 -I. -I/tmp/pear/temp/sqlsrv -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootnuxjAy/sqlsrv-5.8.0/include -I/tmp/pear/temp/pear-build-rootnuxjAy/sqlsrv-5.8.0/main -I/tmp/pear/temp/sqlsrv -I/usr/include/php/20170718 -I/usr/include/php/20170718/main -I/usr/include/php/20170718/TSRM -I/usr/include/php/20170718/Zend -I/usr/include/php/20170718/ext -I/usr/include/php/20170718/ext/date/lib -I/tmp/pear/temp/sqlsrv/shared/ -DHAVE_CONFIG_H -std=c++11 -D_FORTIFY_SOURCE=2 -O2 -fstack-protector -c /tmp/pear/temp/sqlsrv/conn.cpp -o conn.lo
libtool: compile: g++ -std=c++11 -I. -I/tmp/pear/temp/sqlsrv -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootnuxjAy/sqlsrv-5.8.0/include -I/tmp/pear/temp/pear-build-rootnuxjAy/sqlsrv-5.8.0/main -I/tmp/pear/temp/sqlsrv -I/usr/include/php/20170718 -I/usr/include/php/20170718/main -I/usr/include/php/20170718/TSRM -I/usr/include/php/20170718/Zend -I/usr/include/php/20170718/ext -I/usr/include/php/20170718/ext/date/lib -I/tmp/pear/temp/sqlsrv/shared/ -DHAVE_CONFIG_H -std=c++11 -D_FORTIFY_SOURCE=2 -O2 -fstack-protector -c /tmp/pear/temp/sqlsrv/conn.cpp -fPIC -DPIC -o .libs/conn.o
In file included from /tmp/pear/temp/sqlsrv/shared/typedefs_for_linux.h:23:0,
from /tmp/pear/temp/sqlsrv/shared/xplat_winnls.h:24,
from /tmp/pear/temp/sqlsrv/shared/FormattedPrint.h:24,
from /tmp/pear/temp/sqlsrv/shared/core_sqlsrv.h:41,
from /tmp/pear/temp/sqlsrv/php_sqlsrv_int.h:25,
from /tmp/pear/temp/sqlsrv/conn.cpp:24:
/tmp/pear/temp/sqlsrv/shared/xplat.h:30:10: fatal error: sql.h: No such file or directory
#include
^~~
compilation terminated.
Makefile:194: recipe for target ‘conn.lo’ failed
make: *** [conn.lo] Error 1
ERROR: `make’ failed
root@server:~#

Düzeltmek için aşağıdaki komutu çalıştırdık

apt-get install unixodbc-dev

pdo_sqlsrv kurmak için aşağıdaki komutu çalıştırın

pecl install pdo_sqlsrv-5.8.0

Çalıştırın

printf “; priority=20\nextension=sqlsrv.so\n” > /etc/php/7.2/mods-available/sqlsrv.ini
printf “; priority=30\nextension=pdo_sqlsrv.so\n” > /etc/php/7.2/mods-available/pdo_sqlsrv.ini

PHP modüllerini etkinleştirin

phpenmod -v 7.2 sqlsrv pdo_sqlsrv

Apache’yi yeniden başlatın, şimdi phpinfo(), pdo_sqlsrv’yi gösteriyor

pdo sqlsrv

Ancak MS SQL sunucusuna bağlanan PHP betiğine erişirken hata alıyoruz

This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server. Access the following URL to download the ODBC Driver for SQL Server for x64

Bunu düzeltmek için

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

Ubuntu 16.04 için

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

Ubuntu 18.04 için

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

Ubuntu 20.04 için

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

Ubuntu 20.10

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

apt önbelleğini güncelleyin

apt-get update

Microsoft ODBC’yi yükleyin

apt-get install -y msodbcsql17

İsteğe bağlı: bcp ve sqlcmd için

apt-get install -y mssql-toolsecho ‘export PATH=”$PATH:/opt/mssql-tools/bin”‘ >> ~/.bashrcsource ~/.bashrc
apt-get install -y unixodbc-dev

Artık php MS SQL modülü çalışacaktır.

Yazının orijinalini buradan okuyabilirsiniz.

Hüseyin GÜÇ

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım. Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum. Son 6 yıldır  sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum. Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.