Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  hosting
  mod_gzip
  mod_log_sql
  mod_geoip
  mod_bandwidth
  mod_accounting
  mod_bunzip2
  mod_mp3
  mod_shapvh
  mod_limitipconn
  mod_sqlinclude
  mod_auth_imap
  webalizer
  Apache + SSL
  auth_ldap
  Настройка AWStats
  apache 2.0
  mod_auth_external
  CMS - TYPO3
  phpBB-2/3
  mod_ntlm
  mod_ntlm2
  Nginx+php+fcgi
  OTRS на Apache1
  OTRS на Apache20
  ApacheStats
  mod_evasive
  Lighttpd
  nginx+php-fpm+mysql
  php + mssql
  MySQL + кодировки
  svn+apache+trac
  php5-oci8
  Lighttpd + Apache
  CMS Drupal 6.9
  Apache22+MySQL
  Оптимизация хоста для CMS
  блокировка spam на www
  PostgreSQL 8
  Apache 22 + PHP5 + suPHP
  lighttpd + mod_uploadprogress
  VirtualBox + phpVirtualBox
  DNS API
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> WWW —> php + mssql

php + mssql (freetds)

Автор: Abigor.


У меня есть хостинг, настроенный от части по статье Лиса. Все долгое время работало, но так как у нас есть единая база по всему чего только можно, и хранится она в MS SQL 2005. Понадобилось дать к ней доступ с хостинга.
На чем это все делалось:
FreeBSD 7.0-RELEASE
apache-2.2.8
mod_fastcgi-2.4.6
php5-5.2.5

Для начала, ставим модуль для php.
make -C /usr/ports/databases/php5-mssql/ install clean

Перезагружаем apache, чтоб он увидел модуль.
Так, теперь самое интересное в этом деле, php у нас будет рабоать через прослойку в виде freetds. Почитать про это дело можно тут. Ставим.
make -C /usr/ports/databases/freetds/ install clean
make -C /usr/ports/databases/freetds-msdblib/ install clean

Теперь идем в /usr/local/etc и правим конфиг freetds
[root@dedic etc]# ls freetds.*
-r--r--r--  1 root  wheel  1493 30 апр 10:19 freetds.conf
-r--r--r--  1 root  wheel  3572  4 май 10:54 freetds.conf.dist
[root@dedic etc]#

Приводим его к подобному виду:
[global]
    tds version = 4.2
    initial block size = 512
    swap broken dates = no
    try server login = no
    try domain login = yes
    cross domain login = no
    swap broken money = no
    dump file = /tmp/freetds.log
;    debug flags = 0xffff
;    timeout = 10
;    connect timeout = 10
    text size = 64512

[websql]
    host = websql.isea.ru
    port = 1433
    tds version = 8.0
    client charset = CP1251

[sql]
    host = sql.isea.ru
    port = 1433
    tds version = 8.0
    client charset = CP1251

У меня два sql сервера к которым необходимо подключаться, по этому они оба у меня тут описаны. Да, оба сервера должны иметь рабочую A запись в dns, иначе будут трудности.
Так, все поставили, можно начинать проверять на работоспособность все это дело.
Для начала заведем в домене пользователя под которым будет происходить коннект к базам, (почему в домене? да по тому что у меня в ms sql авторизация только по домену, внутренняя авторизация отключена), даем ему права на нужные базы, и команды. Дальше я написал маленький скрипт на php чтоб проверить работоспособность всего этого.
Вот скрипт: (не пинайте если чего не так, я не сильно люблю php, так что как мог, так и написал)
<?
$conn = mssql_connect ('sql', 'ISEA\iis-mek.isea.ru', 'pass') \
      or die ("Can't connect to Microsoft SQL Server");
mssql_select_db('db_name', $conn) or die ("Can't select databes");

$result = mssql_query("sql запрос");

for ($i = 0; $i < mssql_num_rows( $result ); ++$i){
    $line = mssql_fetch_row($result);
    print( "$line[0] - $line[1]\n");
}
?>

Ну и можем его выполнить в консоли или через web, я через web выполнил, в браузере появился результат запроса. Вот как бы и все :)






размещено: 2008-05-04,
последнее обновление: 2008-05-04,
автор: Abigor

оценить статью:

max, 2008-05-04 в 16:37:13

замечательная статья

Sash, 2008-05-04 в 19:56:09

ой, цпасибА! ) как раз воремя.

mssql, 2008-05-20 в 16:01:00

Супер! Прямо вовремя!

MelkorBSD, 2008-05-28 в 19:17:31

Хочется особо отметить вот этот параметр:

text size = 64512

Если Ваш PHP-скрипт вытаскивает из базы что-то из text/image поля, то он вытащит оттуда не более этого значения.
Поэтому рекомендую об этом подумать заранее и в случае необходимости выставить тут число чуть побольше (можно до 4G).

Vitaly, 2008-06-19 в 21:55:20

while ($row = mssql_fetch_assoc($result))
{
   echo serialize($row)."\r\n";
}

/*
Мне кажется так получше будет
ну и еще до кучи можно проверить валидность $result
*/

stalex, 2009-03-19 в 15:04:29

спасибо !

Leech, 2009-04-09 в 21:28:15

Супер !!! Все пашет как часы.
Огромное спасибо. Нигде не видел лучшего объяснения.
Главное все на свежей версии фряхи :)

С Уважением Leech

Seltsam, 2009-11-10 в 14:06:54

Работает без вопросов с MSSQL 2000 - это Вы бы уточнили в статье =)
Пробовали с MSSQL-2005 - необходимо во freetds.conf для сервера указывать порт 1168, на 1433 сам sql-сервер посылает нафиг.
Сейчас столкнулись с траблой во фришке 7.2 с обновлёнными портами (php-5.2.11) - коннект к серверу есть (согласно файрвола пакеты бегают), а вот в логах апача говорится:
HP Warning:  mssql_connect() [<a href='function.mssql-connect'>function.mssql-connect</a>]: Unable to connect to server:  srv_db1 in /usr/local/www/webinfo/data/1ca/main.php on line 25, referer: http://webinfo/1ca/
и всё... в логах sql-сервака ничего не поймали, какбуд-то коннекта никакого нет, хотя тем же netstat -na коннект есть...
что подскажете? форум?

abigor, 2009-11-10 в 18:21:23

2 Seltsam если вы внимательно читали, то в самом начале, сказано, что все это дело делалось с MSSQL 2005 по этому конфиг выложен рабочий.
До php 5.2.11 только предстоит обновляться. Тут ни чего не скажу пока....

Seltsam, 2009-11-10 в 18:58:33

Я сильно извиняюсь - заметил, только пост уже изменить нельзя было.
Боролся сегодня с программером с этой проблемой, в итоге - поменяли в конфиге freetds.conf для необходимого сервера tds version с 8.0 на 7.2 и потом программер ещё что-то там с кодировками возился - sql-сервер не понимал почему-то utf-8. эту кодировку необходимо было юзать программеру для простоты чего-то там. в общем - вроде заработало.
а вообще - изначально такая связка php+mssql работало на freebsd-6.2, php-5.2.9. только там ещё использовали pool.conf и [mypool] в freetds.conf.
походу что-то в php-5.2.11 по поводу freetds изменилось, т.к. если в странице на php напрямую указывать сервер и параметры подключения, то работало тоже без проблем, ну только опять там с кодировками надо было что-то делать программеру.
но за инфу - спасибо по любому =)
всё равно идеального ничего нет, а грабли - вечная вещь =)

abigor, 2009-11-10 в 19:40:03

:) хорошо все что хорошо кончается


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 19 чел.
За последние 30 мин было: 125 человек
За сегодня было
13481 показов,
866 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0385 секунд
Из них PHP: 25%; SQL: 75%; Число SQL-запросов: 77 шт.
Исходный размер: 107986; Сжатая: 19641