Как подключиться к MS SQL из PHP

php to microsoft sql

Оставлю себе заметку как подключиться к MS SQL из PHP.

Пришлось повозиться и выискивать в гугле решения тех или иных ошибок, которые выскакивали во время инсталяции, настройки и попыток подключиться к базе. 

Дано: Чистый Ubuntu 18.04 LTS, только что проинсталеный в гугл облаке и Windows Server 2016 с базой MS SQL Server 14 - там же в гугл облаке.

Цель: подключится php-скриптом к базе и получить данные.

Сначала настраиваем на Windows сетевой доступ к базе, можно подсмотреть вот тут. То, что связано с Apex - можно упустить.

Дальше на Ubuntu выполняем команды:

sudo apt-get update
sudo apt-get install php7.2-fpm php7.2-cli php7.2-mysql php7.2-pgsql php7.2-sqlite3 php7.2-curl php7.2-json php7.2-gd php7.2-intl php7.2-mbstring php7.2-soap php7.2-xml php7.2-xmlrpc php7.2-xsl php7.2-dev php7.2-zip php7.2-odbc php-apcu php-imagick
sudo apt-get install php-pear
sudo apt-get install libmcrypt-dev libreadline-dev
sudo pecl install mcrypt-1.0.1
sudo su
echo 'extension = mcrypt.so' >> /etc/php/7.2/fpm/php.ini
echo 'extension = mcrypt.so' >> /etc/php/7.2/cli/php.ini
exit
sudo apt-get install libcurl3-openssl-dev
sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-tools.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install mssql-tools
sudo apt-get install unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
sudo pecl install sqlsrv pdo_sqlsrv
curl ipinfo.io

Даем права ip конектитcя к базе и проверяем конект:

sqlcmd -S тут_айпи_или_имя_хоста -U имя_пользователя -P пароль_пользователя -Q "SELECT @@VERSION"

Следующая пачка команд:

sudo su
echo 'extension= pdo.so' >> /etc/php/7.2/fpm/php.ini
echo 'extension= pdo.so' >> /etc/php/7.2/cli/php.ini
echo 'extension= pdo_sqlsrv.so' >> /etc/php/7.2/fpm/php.ini
echo 'extension= pdo_sqlsrv.so' >> /etc/php/7.2/cli/php.ini
echo 'extension= sqlsrv.so' >> /etc/php/7.2/fpm/php.ini
echo 'extension= sqlsrv.so' >> /etc/php/7.2/cli/php.ini
exit
sudo mv /etc/php/7.2/cli/conf.d/10-pdo.ini /etc/php/7.2/cli/conf.d/10-pdo.ini.bak
sudo mv /etc/php/7.2/fpm/conf.d/10-pdo.ini /etc/php/7.2/fpm/conf.d/10-pdo.ini.bak
sudo service php7.2-fpm restart
nano test-mssql.php


Вставляем в редактор кусок кода:

<?php
try {

//connection params
$dbCon = new PDO('sqlsrv:server=айпи_или_хостнейм;database=имя_базы', 'пользователь', 'пароль');

//test query
$result = $dbCon->query('SELECT TOP 10 * FROM [master].[INFORMATION_SCHEMA].[TABLES]');

//show the results
foreach ($result as $row)
{
print_r( $row );
}

//close the connection
$dbCon = null;

} catch (PDOException $e) {

//show exception
echo $e->getMessage()."\n";

}

Запускаем скрипт: php test-mssql.php 

Полезные ссылки:

 

Понравилось? =) Поделись с друзьями:

Обсудить