Как стать автором
Обновить

PHP4/5 + MS SQL при помощи FreeTDS

По работе была поставлена задача установить новый сервер Linux, Apache, MySQL, php.
Все бы ничего, но еще и с MS SQL надо работать.
Казалось бы, задачка тривиальная: Поставил CentOS, подключил репозитории, и дальше yum install в помощь.
Однако, не все так просто.
Php понадобился 4 (в самом деле, не переписывать же несколько десятков сайтов, написанных неизвестно кем).

Итак, приступим.
После установки имеем чистую CentOS 5.7, логин и пароль, установленный Apache и MySQL.
Логинимся из-под root'а.
Далее:
Ставим MC (чтобы было проще работать):
yum install mc
Потом ставим пакеты, для нормальной работы c MS SQL:
yum install gcc && yum install flex && yum install httpd-devel && yum install freetds && yum install freetds-devel

Для 64-битной Linux, возможно, понадобится создать символические ссылки в папке /usr/lib для корректной работы:
cd /usr/lib
ln -s /usr/lib64/libtds.so && ln -s /usr/lib64/libtds.so.5 && ln -s /usr/lib64/libtds.so.5.0.0


Скачиваем php4:
cd /opt/
wget us.php.net/get/php-4.4.9.tar.gz/from/ru.php.net/mirror

Разархивируем в папку /opt/php (мне проще через mc это делать).
Далее собираем php:
cd /opt/php
./configure --with-apxs2=/usr/sbin/apxs --prefix=/usr/local/ --with-mysql --enable-mbstring --with-config-file-path=/usr/local/etc --enable-ftp --enable-libxml --with-dom-xslt --with-libxml-dir=/usr/local --enable-reflection --enable-force-cgi-redirect --enable-fastcgi --with-iconv --with-regex=php --mandir=/usr/local/man --infodir=/usr/local/info/ --with-gd=/usr --with-dom --enable-gd-native-ttf=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-ttf --with-zlib-dir=/usr --enable-inline-optimization --with-pear --disable-debug --with-mssql

Ждем, пока сконфигурируется.

Возможные ошибки:
Please reinstall the libxml
Решение:
yum install libxml2 libxml2-devel

Please reinstall the libxslt
Решение:
yum install libxslt-devel

Configure: error: libjpeg.(also) not found.
Решение:
yum install libjpeg libjpeg-devel

Configure: error: libpng.(also) not found.
Решение:
yum install libpng libpng-devel

Unable to find gd.h
Решение:
yum install gd-devel

Компилируем, ставим:
make && make install

Иногда может понадобиться дополнительно поставить unixODBC (если не был установлен раньше):
yum install unixODBC-devel

Подключаем FreeTDS:
vim /etc/freetds.conf
И там прописываем (надеюсь, понятно):
[myServerName]
host = 22.22.22.22
port = 1433
tds version = 7.0
instance = MSSQL2k8
client charset=cp1251

Рестартуем Apache:
service httpd restart

И натыкаемся на segmentation fault.
Проблема в том, что по-умолчанию уже ставится php5.
Если php5 не нужен, то делаем следующее:
1) Удаляем php5:
yum remove php
2) Правим /etc/httpd/httpd.conf
Прописываем (если нету) строку:
LoadModule php4_module /etc/httpd/modules/libphp4.so
3) удаляем файл /etc/httpd/conf.d/php.conf:
rm /etc/httpd/conf.d/php.conf
4) Чтобы php-скрипты работали, дописываем строку:
AddType application/x-httpd-php .php

Делаем еще раз рестарт.
Поднялся php4, работает с MS SQL.

Для php5 — все намного проще:
Подключил репозиторий epel и:
yum install php52-mssql
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.