Подтвердить что ты не робот

Linux - PHP 7.0 и MSSQL (Microsoft SQL)

Да, я знаю, что PHP 7.0 удалил расширения, необходимые для подключения к MSSQL. FreeTDS был моим вариантом до PHP 7.0, но теперь действительно нет очевидного пути обновления для тех, кому еще нужно подключиться к MSSQL.

Глупый вопрос, но учитывая, что MSSQL, безусловно, хорошо используется в корпоративных средах, как мы должны подключаться к тем базам данных, начиная с PHP 7.0?

Я не замечаю что-то явно очевидное или релиз PHP 7 в основном дает пощечину всем, кому нужно подключиться к MSSQL?

Для ясности я НЕ говорю о подключении с сервера Windows, на котором работает PHP, мне нужно подключиться к MSSQL с сервера Linux и, следовательно, вам понадобится драйвер ODBC Linux.

Кто-нибудь делает такую ​​вещь, которая работает с MSSQL 2012 и PHP 7.0, которые можно получить бесплатно или за определенную плату?

Мне странно, что там не так много информации о PHP 7 и MSSQL. Предоставлено, что PHP 7 свежий от прессов, но там должно быть больше магазинов MSSQL (FWIW мы используем оба).

4b9b3361

Ответ 1

В Microsoft есть PHP Linux Drivers для SQL Server для PHP 7 и выше на PECL. Это готовое производство. Чтобы загрузить их, выполните следующие действия:

Ubuntu 16.04:

sudo su 
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools unixodbc-dev
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

CentOS 7:

sudo su
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
sudo yum update
sudo ACCEPT_EULA=Y yum install -y msodbcsql mssql-tools unixODBC-devel 
sudo yum groupinstall "Development Tools"
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

Это установит драйверы PHP SQL Server и зарегистрирует их в папке php.ini.

Убедитесь, что он работает, используя следующий пример

<?php
$serverName = "localhost";
$connectionOptions = array(
    "Database" => "SampleDB",
    "Uid" => "sa",
    "PWD" => "your_password"
);
//Establishes the connection
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn)
    echo "Connected!"
?>

Ссылки для справки:

Ответ 2

В sybase PHP7 содержится модуль pdo_dblib.

sudo apt install php7.0-sybase

Ответ 3

У официального расширения MS есть ветвь для PHP 7:

По-прежнему много недостающих вещей, некоторые из них отмечены как запланировано (поддержка Linux среди них), тем не менее это может быть еще одно решение в будущем.

EDIT (09-09-2016):. С марта было выпущено несколько выпусков Linux, выпущенных специально для CentOS/Ubuntu и доступных источников. Имейте в виду, что они еще не отмечены как "Готовая продукция".

Ответ 4

Я определенно согласен с тобой. Я работаю в основном с SQL Server на работе и не понимаю, почему они не включают драйверы по умолчанию для SQL-серверов в PHP.

Для linux я не слишком уверен, что вы ранее использовали, но я обнаружил, что драйвер "dblib" - лучший драйвер для подключения к SQL-серверам.

Но в основном для linux box вы просто хотите выполнить эти несколько шагов, чтобы установить драйвер сервера sql.

apt-get install freetds-dev -y
vim /etc/freetds.conf

Затем продолжайте и добавьте туда свои соединения и перезапустите apache, и вам должно быть хорошо, чтобы идти!

Ответ 5

В соответствии с вышеприведенным ответом - шаги выводят общий объект (*.so), поэтому файлу php.ini также требуется расширение файла.

echo "extension=sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

Ответ 6

Я изменил

yum install freetds-dev
vim /etc/freetds.conf

И измените freetds.conf, установите php mssql module

yum install php-mssql.x86_64