Марат-блог
Услуги по продвижению и разработке сайта
Отправить заявку
Заказать обратный звонок

Спасибо, Ваша заявка принята.

В ближайшее время менеджер свяжется с Вами.

Главная Программирование Установка PDO_DBLIB + MSSQL на CPanel/WHM
Установка PDO_DBLIB + MSSQL на CPanel/WHM
Программирование
369
07 сентября 2014

Установка PDO_DBLIB + MSSQL на CPanel/WHM

PHP Data Objects (PDO) это расширение для PHP, предоставляющее разработчику простой и универсальный интерфейс для доступа к различным базам данных. В настоящее время для PDO существуют драйверы практически ко всем общеизвестным СУБД и интерфейсам.

Microsoft SQL Server and Sybase Functions (PDO_DBLIB)
PDO_DBLIB драйвер для PHP позволяющее работать базами данных от Microsoft SQL Server (MSSQL)

Установка PDO_DBLIB производилась на следующей конфигурации:
Панель управления: CPanel/WHM
Система CentOS 6.3
Версия PHP: 5.3.16

Было перепробовано много различных вариантов, потрачено много времени и наконец-то нашлось решение.

Инструкция по установки PDO_DBLIB следующая:

1. Компилируем апач с PDO через EasyApache (Apache Update), т.е. ставим галочки на PDO и PDO MySQL (если требуется, но не помешает)

2. С начала надо установить FreeTDS
(ftp://mirrors.ibiblio.org/freetds/stable/)

# Скачать последнюю версию дистрибутива
wget ftp://mirrors.ibiblio.org/freetds/stable/freetds-0.91.tar.gz

# Распаковать ее
tar -zxvf freetds-0.91.tar.gz

# Перейти в папку дистрибутива
cd freetds-0.91

# Теперь нужно сконфигурировать
# Если SQL 2000 в параметре --with-tdsver= ставим 8.0, т.е. --with-tdsver=8.0
# Если SQL 7.0 в параметре --with-tdsver= ставит 7.0, т.е. --with-tdsver=7.0

./configure --prefix=/usr/local/freetds --with-tdsver=7.0 --enable-msdblib --with-gnu-ld

# Скомпилировать и установить
make && make install

# Так как у нас 64-х битная система, нужно создать symlink
ln -s /usr/local/freetds/lib/libsybdb.so.5 /usr/lib64/libsybdb.so.5

# Без этого работать не будет, создаем пустые файлы
touch /usr/local/freetds/include/tds.h
touch /usr/local/freetds/lib/libtds.a
Конфиг FreeTDS находится тут : /usr/local/freetds/etc/freetds.conf

3. После этого приступаем к установки самой PDO_DBLIB.
Последнюю версию смотрим тут http://pecl.php.net/package/PDO_DBLIB, ту и качаем.

# Скачать последнюю версию дистрибутива
wget http://pecl.php.net/get/PDO_DBLIB-1.0.tgz

# Распаковать ее
tar -zxvf PDO_DBLIB-1.0.tgz

# Перейти в папку дистрибутива
cd PDO_DBLIB-1.0

# Подготовить ее
phpize

# Сконфигурировать. Без этого ключа будет ругаться
./configure --with-pdo-dblib=/usr/local/freetds

# Скомпилировать и установить
make && make install

4. Надо зайти в файл конфигурации php.ini и добавить строчку extension = pdo_dblib.so
Добавляем следующую строчку (ближе к концу, где все extension):
vi /usr/local/lib/php.ini
extension = pdo_dblib.so

# Перезапустить апач
service httpd restart

На этом все, процесс установки pdo_dblib закончен.

5. Проверяем что получилось

php -i | grep PDO

или через вывод phpinfo(); в php файле обратившись к нему через браузер.

6. Если еще нужна поддержка MSSQL то делаем следующее:

Открываем файл /var/cpanel/easy/apache/rawopts/all_php5
если его нет то создаем
vi /var/cpanel/easy/apache/rawopts/all_php5
# В него добавляем следующую строчку, в начале строки, если уже есть какой то параметр то добавляем его на следующей строке
--with-mssql=/usr/local/freetds

Можно компелировать апач через EasyApache (Apache Update) но если система 64 битная то будет следующая ошибка:
configure: error: Could not find /usr/local/freetds/lib64/libsybdb.a|so

# Делаем следующее, переходим в директорию freetds
cd /usr/local/freetds
# Делаем символическую ссылку
ln -s lib lib64

# Так же в файл /etc/ld.so.conf добавить (все что там было удалили и добавили следующие строки, пока проблем не было замечено и все работало)
/usr/local/freetds/lib
/usr/local/freetds/bin
/usr/local/freetds/lib64

# Выполнить
ldconfig -v

Теперь можно запускать EasyApache (Apache Update) и компелировать с вашими параметрами.

библиотека Mssql установлена!
Конфигурировать настройки mssql нужно в php.ini (/usr/local/lib/php.ini)

php -i | grep mssql

Но один момент, все делали как написали, но инструкция не на 100% верна, возможно какой то момент упустили, т.к. делали многое методом проб и ошибок.

P.S. Не забудьте открыть необходимы порты в вашем Firewalls для удаленного соединения с MS SQL сервером., стандартный порт 1443