AddThis Smart Layers

суббота, 10 марта 2012 г.

Как подключиться к MSSQL серверу из PHP. Новая ревизия.

Почти полтора года прошло с того момента, как я написал шпаргалку по установке драйвера PDO_DBLIB для подключения к удаленному MSSQL серверу из PHP.

Сегодня выяснилось, что кроме того, что с того времени утекло много воды, так еще и технология на месте не стоит и та шпаргалка уже не очень то актуальна.


Итак, сегодня настраивал новый сервер, где необходимо было установить драйвер PDO_DBLIB.
В отличие от предыдущего сервера, на этом установил CentOS 6 64bit и PHP 5.3.10.

После того как
pecl install pdo
выдал ошибку, полез гуглить и понял, что в PHP 5.3.x поддержка PDO теперь является частью ядра и не нужно его устанавливать через PECL.

Дальше все оказалось довольно просто (когда уже знаешь что делать).

Сначала надо установить FreeTDS.
  1. wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
    # Скачать последнюю версию дистрибутива
  2. tar -zxvf freetds-stable.tgz
    # Распаковать ее
  3. cd freetds-*
    # Перейти в папку дистрибутива. * поменять на номер текущей версии
  4. ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib --with-gnu-ld
    # Сконфигурировать
  5. make && make install
    # Скомпилировать и установить
  6. ln -s /usr/local/freetds/lib/libsybdb.so.5 /usr/lib64/libsybdb.so.5
    # Так как у нас 64-х битная система, нужно создать symlink
  7. touch /usr/local/freetds/include/tds.h
    # Все тот же старый глюк, без этого работать не будет
  8. touch /usr/local/freetds/lib/libtds.a
    # Аналогично
После этого устанавливаем сам PDO_DBLIB.
  1. wget http://pecl.php.net/get/PDO_DBLIB-1.0.tgz
    # Скачать последнюю версию дистрибутива
  2. tar -zxvf PDO_DBLIB-1.0.tgz
    # Распаковать ее
  3. cd PDO_DBLIB-1.0
    # Перейти в папку дистрибутива
  4. phpize
    # Подготовить почву
  5. ./configure --with-pdo-dblib=/usr/local/freetds
    # Сконфигурировать. Без этого ключа будет ругаться
  6. make && make install
     # Скомпилировать и установить
Хоть в PHP 5.3 поддержка PDO и является частью ядра, по умолчанию он не включен.
Надо зайти в файл конфигурации php.ini и добавить строчку
extension = pdo.so
Ну и сразу же добавить свежеустановленный модуль
extension = pdo_dblib.so
Перезапустить апач
service httpd restart
И проверить что получилось
php -i | grep PDO
У меня ответ был таким:
PDO
PDO support => enabled
PDO drivers => sqlite, sqlite2, mysql, dblib
PDO Driver for FreeTDS/Sybase DB-lib => enabled
PDO Driver for MySQL => enabled
PDO Driver for SQLite 3.x => enabled

Все вышеописанные операции делаются с правами root. Данная шпаргалка не претендует на универсальность.

Комментариев нет :

Отправить комментарий