mssql 모듈 추가
Server/CentOS / 2012/02/17 23:30
mssql 모듈 추가
Linux 에서도 freetds 와 mssql 모듈이 있으면 외부 mssql 에 접속이 가능합니다.
freetds 설치하고 mssql 모듈은 php를 이미 소스설치 하였기 때문에 재컴파일 없이 별도로 컴파일을 하였습니다.
(참고로 바로 아래는 실패한 방법이니 따라하지는 마시길;)
1. freetds 설치
2. mssql 모듈 추가
3. apache 재시작
4. phpinfo 확인
5. mssql 테스트
그리고 test.php 파일을 불렀더니
freetds.conf 파일에서 설정을 해주고 접속하면 당연히 됩니다.
하지만, 예전에 freetds.conf 설정을 안하고 php 에서 여러 mssql 접속이 바로 가능했던 기억이 있기에 이건 아니라고 생각하고 여러 방법을 시도했습니다.
게다가 그냥 접속 실패도 아니고 Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server 오류가 나는 것도 이해할 수 없었고...
일단 성공해서 정말 다행입니다. 이유는 모르겠습니다.
여러가지 의심가는 부분은 많지만 더이상 테스트해 보고 싶지 않네요.ㅋ
성공 조합
test.php 파일 불러보니
Linux 에서도 freetds 와 mssql 모듈이 있으면 외부 mssql 에 접속이 가능합니다.
freetds 설치하고 mssql 모듈은 php를 이미 소스설치 하였기 때문에 재컴파일 없이 별도로 컴파일을 하였습니다.
(참고로 바로 아래는 실패한 방법이니 따라하지는 마시길;)
1. freetds 설치
# wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
# tar zxvf freetds-stable.tgz
# cd freetds-0.91
# ./configure --prefix=/usr/local/freetds --enable-msdblib
# make
# make install
# vi /etc/ld.so.conf
/usr/local/freetds/lib <- 추가
# ldconfig -v
# tar zxvf freetds-stable.tgz
# cd freetds-0.91
# ./configure --prefix=/usr/local/freetds --enable-msdblib
# make
# make install
# vi /etc/ld.so.conf
/usr/local/freetds/lib <- 추가
# ldconfig -v
2. mssql 모듈 추가
# cd /usr/local/src/php-5.2.17/ext/mssql
# /usr/local/php/bin/phpize
# ./configure --with-mssql=/usr/local/freetds --with-php-config=/usr/local/php/bin/php-config
# make
# make install
# cp modules/mssql.so /usr/local/php/modules
# vi /usr/local/php/etc/php.ini
extension_dir=/usr/local/php/modules/
extension=mssql.so
# /usr/local/php/bin/phpize
# ./configure --with-mssql=/usr/local/freetds --with-php-config=/usr/local/php/bin/php-config
# make
# make install
# cp modules/mssql.so /usr/local/php/modules
# vi /usr/local/php/etc/php.ini
extension_dir=/usr/local/php/modules/
extension=mssql.so
3. apache 재시작
# /etc/init.d/httpd stop
# /etc/init.d/httpd start
# /etc/init.d/httpd start
4. phpinfo 확인
# php -i | grep mssql
mssql...
mssql...
5. mssql 테스트
# vi test.php
$link = mssql_connect( $db_ip, $db_id, $db_pwd );
if ( !$link ) {
die( 'DB Connect Failed.' );
} else {
echo 'success!';
}
$link = mssql_connect( $db_ip, $db_id, $db_pwd );
if ( !$link ) {
die( 'DB Connect Failed.' );
} else {
echo 'success!';
}
그리고 test.php 파일을 불렀더니
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: xxx.xxx.xxx.xxx in /home/www/test.php on line 3
DB Connect Failed.
DB Connect Failed.
freetds.conf 파일에서 설정을 해주고 접속하면 당연히 됩니다.
하지만, 예전에 freetds.conf 설정을 안하고 php 에서 여러 mssql 접속이 바로 가능했던 기억이 있기에 이건 아니라고 생각하고 여러 방법을 시도했습니다.
게다가 그냥 접속 실패도 아니고 Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server 오류가 나는 것도 이해할 수 없었고...
freetds 소스설치 여러버전 여러옵션 + mssql 컴파일 = 다실패.
freetds yum 설치 + mssql 컴파일 = 실패
freetds 소스설치 여러버전 여러옵션 + php 재컴파일 = 다실패
freetds yum 설치 + php 재컴파일 = 성공
freetds yum 설치 + mssql 컴파일 = 실패
freetds 소스설치 여러버전 여러옵션 + php 재컴파일 = 다실패
freetds yum 설치 + php 재컴파일 = 성공
일단 성공해서 정말 다행입니다. 이유는 모르겠습니다.
여러가지 의심가는 부분은 많지만 더이상 테스트해 보고 싶지 않네요.ㅋ
성공 조합
# yum -y install freetds*
# cd /usr/local/src/php-5.2.17
# ./configure --prefix=/usr/local/php-5.2.17 \
...
--with-mssql=/usr
--with-libdir=lib64 (64bit일 경우)
# make
# make install
# cp php.ini-dist /usr/local/php/etc/php.ini
# /etc/init.d/httpd stop
# /etc/init.d/httpd start
# cd /usr/local/src/php-5.2.17
# ./configure --prefix=/usr/local/php-5.2.17 \
...
--with-mssql=/usr
--with-libdir=lib64 (64bit일 경우)
# make
# make install
# cp php.ini-dist /usr/local/php/etc/php.ini
# /etc/init.d/httpd stop
# /etc/init.d/httpd start
test.php 파일 불러보니
success!
