본문 바로가기

Server Story..../etc

iis + php + mssql charset


뭐   다는 아니고,  iis 에 php  에  mssql 적용하는데..


거기다 xe 를 올렸다,, 


죈장   공백이 물음표로 나온다. ㅠ.ㅠ


찾다 찾다 찾았다.  


바로 아래 ~!!!!!!   


조~~~ 기   에다가   UTF-8 로 맞추면 된다 초기 생성 때부터..



=================================


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>

 

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

01.<!--?
02.$DB_IP          = "아이피:포트";
03.$DB_USERID  = "계정";
04.$DB_USERPW  = "패스워드";
05.$DB_NAME        = "디비";
06. 
07.$conn = mssql_connect($DB_IP, $DB_USERID,$DB_USERPW);
08.mssql_select_db($DB_NAME, $conn);
09.$result = mssql_query("select TR_CD, TR_NM from strade where TR_NM like '%GAME%'");
10. 
11....
12. 
13.mssql_close($conn);
14.?-->

 


설치 중 발생한 오류 1.

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

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

# 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 원격 접속 허용 설정을 해 주어야 한다.

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