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

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.