MSSQL: настройка подключения из PHP

С помощью менеджера пакетов

Debian:

apt-get -y install freetds-bin tdsodbc unixodbc php5-sybase
vim /etc/freetds/freetds.conf
php -r 'echo function_exists("mssql_connect");'

CentOS:

yum install php-mssql
php -r 'echo function_exists("mssql_connect");'

Вручную

Два пути - с пересборкой PHP и без

Вариант без сборки

Устанавливаем ODBC

ODBC (Open DB Connectivity) - это унифицированный API доступа к БД, который позволяет абстрагироваться от СУБД и платформы.

В начале проверяем, может быть он уже установлен:

check-odbc.sh
php -r 'echo var_dump(function_exists("odbc_connect"));'

Debian:

apt-get install php5-odbc

CentOS:

yum install php-odbc

Теперь требуемые функции должны быть доступны.

Ставим FreeTDS

FreeTDS - это бесплатная библиотека («клон» платной) для приложений с открытым исходным кодом для подключения к Sybase или Microsoft SQL Server.

Соответствие версий FreeTDS и MSSQL

Последняя стабильная версия

cd /tmp
wget http://mirrors.ibiblio.org/freetds/stable/freetds-0.91.tar.gz
tar -xzf freetds-0.91.tar.gz
cd freetds-0.91
./configure --prefix=/usr/local/bin/freetds --enable-msdblib
make
make install (под su)

Настраиваем конфиг доступа к серверу

vim /usr/local/bin/freetds/etc/freetds.conf 
[machine.local(тут имя)]
host = 10.0.0.1 (в виде домена или IP адреса, но у меня домен почему-то не работал!)
port = 1433
tds version = 7.0

Другие настройки конфига

Проверяем

cd /usr/local/bin/freetds/bin
./tsql -S <mssql.servername.com> -U <ValidUser>

Вводим пароль. Если 1> - ok

Если нет - проверяем через телнет доступность сервера

telnet <mssql.servername.com> 1433

(далее по инструкции...)

Проверяем PHP

php -r '$connect = odbc_connect("server", "user", "password") or die("no connect");'

http://www.freetds.org/userguide/config.htm

Печать/экспорт