MSSQL 서버와 MySQL 서버를 동기화하려는데, 필터링도 필요하고 해서 페이지를 하나 생성하고 crontab에 등록하기로 하였다.
요약하면 아래 2가지 단계로 진행.
- freetds 설치
- 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 원격 접속 허용 설정을 해 주어야 한다.
이 부분은 따로 여기에 포스팅을 했다.
'코딩 > PHP' 카테고리의 다른 글
날짜 계산 (어제, 내일, 일주일 전, 한달 전...) (0) | 2013.02.01 |
---|---|
Fatal error: Allowed memory size of xxx bytes exhausted (0) | 2012.11.08 |
Maximum execution time of 30 seconds exceeded (0) | 2012.05.10 |
curl - GET/POST method로 URL 호출 (0) | 2012.01.17 |
Open Flash Chart + PHP (0) | 2011.12.23 |