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 мы используем оба).
Ответы
Ответ 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