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.
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.