본문으로 바로가기

php와 mssql 서버 연결

category 코딩/PHP 2012. 8. 13. 17:59

MSSQL 서버와 MySQL 서버를 동기화하려는데, 필터링도 필요하고 해서 페이지를 하나 생성하고 crontab에 등록하기로 하였다.

요약하면 아래 2가지 단계로 진행.

 

  1. freetds 설치
  2. php 재컴파일

 

우선 아래 주소에 접속해서 FreeTDS-stable.tgz 파일을 다운로드.

http://www.freetds.org/software.html

 

압축을 풀고 configure, make

 

# tar zxvf freetds-stable.tgz
# cd freetds-0.91
# ./configure --prefix=/usr/local/freetds --with-tdsver=4.2 --enable-msdblib
# make && make install

 

php가 이미 설치되어 있었다면 재컴파일 해야 한다. 기존의 configure 옵션 뒤에 --with-mssql 추가만 할 것이다.

(기존 configure 옵션 보는 법은 php-config를 실행하거나 여기 참고)

 

# tar zxvf freetds-stable.tgz
# ./configure --prefix=/usr/local --with-apxs2=/usr/local/apache/bin/apxs
....
--with-curl --with-zip --with-mssql=/usr/local/freetds
# make && make install
# /etc/init.d/apachectl restart                              아파치 재시작 필요

 

제대로 설치되었는지 확인하는 법은 phpinfo(); 함수를 써 보고 mssql 항목이 추가되었는지 체크.

코드를 테스트해 보기에 앞서 한가지 신경써야 할 것은 문자열 인코딩이다.

 

# cat /usr/local/apache/conf/php.ini -n | grep mssql.charset
;mssql.charset = "ISO-8859-1"    <- 기존 내용
mssql.charset = "UTF-8"          <- utf8로 변경하고 주석 해제

 

코드 테스트 전에 tsql 명령어로 간단히 원격지의 MSSQL 서버에 접속해 본다.

 

# /usr/local/freetds/bin/tsql -S 서버ip -p 서버포트 -U 계정 -P 패스워드
1>

 

마지막으로 페이지를 만들어서 테스트를 해 본다.

아래는 설치 중 발생한 오류이다.

오류 1.

configure 시에 아래 에러 메시지가 나오는 경우 2가지 파일을 만들어 주면 해결된다.

Error Message

Directory /usr/local/freetds is not a FreeTDS installation directory

# touch /usr/local/freetds/lib/libtds.a
# touch /usr/local/freetds/include/tds.h

오류 2.

몇몇 자료를 보면 configure 시에 --with-tdsver=8.0 이렇게 했다고 되어 있다.

이 부분은 MSSQL 서버 버전을 지정하는 것인데, 4.2로 하면 버전에 관계 없이 잘 된다.

실제로 8.0으로 줬더니 접속이 안되서 설치 과정을 전부 새로 진행하였다.

오류 3.

오류까지는 아니고 MSSQL 원격 접속 허용 설정을 해 주어야 한다.

이 부분은 따로 여기에 포스팅을 했다.