php + freetds for mssql on linux
개요
OS : linux (CentOS 등등.. )
WEB : apache + php
환경에서 mssql 접근을 하기 위해서는 freetds 라는 패키지를 이용하면 된다.
DB(MSSQL) 서버 IP : 192.168.0.201
DB 포트 : 1433
DB NAME : ilaya
DB USER : choilha
DB PASS : hahahoho
PHP 설치 경로 : /usr/local
PHP 라이브러리 : /usr/local/lib/php
PHP extension dir : /usr/local/lib/php/extensions
freetds 설치
공식사이트 : http://www.freetds.org/
다운로드 : ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz
configure --prefix=/usr/local/freetds --enable-msdblib --with-gnu-ld --enable-shared make make install
freetds 설정
설정파일 : /usr/local/freetds/etc/freetds.conf
파일의 마지막 부분에 아래와 같이 내용을 추가.. 물론 본인의 상황에 맞게…
[192.168.0.201] host = 192.168.0.201 port = 1433 tds version = 8.0
freetds패키지의 tsql 을 이용해서 접근테스트를 해볼 수 있으니 확인해 볼것
/usr/local/freetds/bin/tsql -S 192.168.0.201 -p 1433 -U choilha -P ”hahahoho”
php + freetds 연동
PHP를 재컴파일 하는 방법도 있겠으나.. 귀찮으니.. 모듈을 사용하는 형태로다가..
cd PHP_SOURCE_DIR/ext/mssql ./configure --with-mssql=/usr/local/freetds --with-php-config=/usr/local/bin/php-config make cp modules/mssql.so /usr/local/lib/php/extensions/ (만약 기본설정의 "no-debug-zts..... "를 사용한다면 그냥 make install 로 처리하면 됨)
모듈 인식 확인
# php -i|grep mssql mssql mssql.allow_persistent => On => On mssql.batchsize => 0 => 0 mssql.compatability_mode => Off => Off mssql.connect_timeout => 5 => 5 mssql.datetimeconvert => On => On mssql.max_links => Unlimited => Unlimited mssql.max_persistent => Unlimited => Unlimited mssql.max_procs => Unlimited => Unlimited mssql.min_error_severity => 10 => 10 mssql.min_message_severity => 10 => 10 mssql.secure_connection => Off => Off mssql.textlimit => Server default => Server default mssql.textsize => Server default => Server default mssql.timeout => 60 => 60
접근 테스트
odbc_mssql.php
<? $hostname = "192.168.0.201"; $username = "choilha"; $password = "hahahoho"; $connection = mssql_connect($hostname,$username,$password) or die("cannot connect mssql server"); ?>
해당 코드에서 아이디 또는 패스워드 부분에 일부러 오타를 낸뒤 접근 오류가 발생 하는지 확인하면 되겠군…
Leave a Reply