
Оставлю себе заметку как подключиться к 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
Полезные ссылки:
- knowledgebase.apexsql.com - How to configure remote access and connect to a remote SQL Server instance with ApexSQL tools
- vandewalle.me - Connect to MS SQL server in PHP7 on Ubuntu Linux 16.04 LTS with Microsoft Drivers
- serverpilot.io - How to Install the PHP SQLSRV Extension
- elims.org.ua - Linux: заметки
Понравилось? =) Поделись с друзьями: