PHP, MSSQL · 3 min read · Oct 25, 2025
PHP Доступ К Базе Данных MSSQL С Debian Etch С ODBC И FreeTDS
PHP Доступ К Базе Данных MSSQL С Debian Etch С ODBC И FreeTDS
Это предполагает, что у вас уже правильно настроены Apache2 и PHP5 на вашей системе. Мои усилия по установлению этого соединения были собраны из информации, найденной на www.unixodbc.org и www.freetds.org. Эти шаги сработали для меня с веб-сервером Apache2 с php5, работающим на Debian Etch stable в октябре 2007 года. SQL сервер работает на Microsoft SQL 2005 на Windows 2003 Server OS.
В этих инструкциях я предполагаю, что вы вошли в систему как root. Я также использую joe в качестве своего редактора, поэтому замените его на ваш любимый редактор.
Сначала установите необходимые пакеты:
#apt-get install tdsodbc libct3 unixodbc php5-odbcЭто должно загрузить и установить unixODBC, FreeTDS и расширения odbc для php5.
Далее мы создаем шаблоны для регистрации ODBC Driver для FreeTDS и для создания ODBC DSN для FreeTDS. Вы можете разместить эти файлы где угодно, так как вы будете использовать “odbcinst” для фактической настройки системы. Я выбрал разместить их в /etc/freetds, где находятся конфигурационные файлы tds.
Регистрация ODBC Driver:
#joe /etc/freetds/tds.driver.templateЗатем вставьте это в редактор:
[TDS]
Description = FreeTDS Driver для Linux & MSSQL на Win32
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.soТеперь DSN:
#joe /etc/freetds/tds.dsn.templateЗатем вставьте это в редактор:
[DSN_NAME]
Description = Тест для freeTDS
Driver = TDS
Trace = Нет
Database = DefaultDatabase [замените на имя вашей базы данных]
Server = mysqlserver.inter.net [замените на хост вашего SQL сервера]
Port = 5050 [замените на порт, на котором слушает SQL]Хорошо, теперь вам нужно вставить эти шаблоны в систему unixODBC:
#odbcinst -i -d -f /etc/freetds/tds.driver.template#odbcinst -i -s -f /etc/freetds/tds.dsn.templateПроблема, с которой я столкнулся на этом этапе, заключалась в том, что DSN был установлен в личные настройки odbc учетной записи root. Поскольку я не могу войти как www-data, чтобы выполнить команду установки dsn, я просто скопировал файл .odbc root в /etc/odbc.ini, который является системным файлом DSN, на который могут ссылаться все пользователи.
#mv /etc/odbc.ini /etc/odbc.ini.bak [на случай, если у вас были другие]#cp /root/.odbc.ini /etc/odbc.iniТеперь вам нужно включить расширение odbc в php, отредактировав ваш файл php.ini. Если вы не сделали какую-либо пользовательскую сборку или установку, файл php ini должен находиться в каталоге /etc/php5/apache2/, так что:
#joe /etc/php5/apache2/php.iniЛучшей практикой является добавление этого в раздел расширений файла php.ini:
extension = odbc.soТеперь вам нужно перезапустить Apache, чтобы изменения php вступили в силу.
#/etc/init.d/apache2 restartВот и все. Предполагая, что у вас есть подключение к машине MSSQL, вы должны быть в состоянии протестировать эту настройку, используя isql. Используя вышеуказанные настройки и имя пользователя Bob с паролем Marley, вот тест:
#isql -v DSN_NAME Bob MarleyВы должны получить подсказку SQL> и можете выполнять любые команды select или другие команды, которые вам нравятся. Теперь перейдем к части PHP. Все, что вам нужно сделать (снова предполагая вышеуказанные примеры), это добавить информацию о подключении в ваш php файл и начать кодировать. Следующий пример является базовым, который вам, конечно, нужно будет адаптировать под свои нужды.
Если у вас возникли проблемы, начните с базового сетевого устранения неполадок. Убедитесь, что вы можете пинговать сервер с вашего debian бокса. Попробуйте подключиться к серверу и порту, на котором слушает MSSQL. Если все работает, вы должны получить пустой экран, из которого нужно выйти. После этого, если пример isql работает, но ваше php соединение нет, я не уверен, куда вас направить.
Удачи!
Get new posts in your inbox
No spam. Unsubscribe anytime.