블로그 이미지
LifeisSimple

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Notice

2010. 12. 21. 19:13 Brain Trainning/PRG Language

PHP에서 Microsoft SQL 서버를 사용하기 위한 방법입니다. 편의상 존칭은 생략합니다. 


PHP에서 ODBC, Microsoft SQL, SyBase 등을 사용할때에 mssql 익스텐션을 컴파일 하기 위해서는 Free TDS 라이블러리가 필요하다.

이때 사용되는 프로토콜은 Microsoft SQL 4.2, 7.0, 8.0 프로토콜을 지원하고 있다. 

설치 방법은 아래와 같다. 

사이트 : http://www.freetds.org
다운로드 : FreeTDS 0.82

다운로드를 적당한 디렉토리 (ex: /usr/local/src) 에 wget등을 이용해서 다운로드 받는다.
(편의상 root로 작업)

Free TDS 라이블러리 설치 
# tar zxvf freetds-stable.tgz
# cd freetds-0.82
./configure (기본으로 /usr/local 에 라이블러리가 설치됨)
# make
make install
ldconfig (vi /etc/ld.so.conf 파일에서 /usr/local/lib 를 추가해준다)

PHP mssql 익스텐션 컴파일
PHP 설치 때 압축을 해제 하였던 디렉토리로 이동한다. 
# cd /usr/local/src/php-5.x.x
cd ext/mssql
phpize (configure 파일 생성)
configure --with-mssql=/usr/local
make
cp .libs/mssql.so /(PHP 익스텐션이 들어 있는 디렉토리*)
* PHP 익스텐션 디렉토리는 php.ini 파일내의 extension_dir 에서 지시한 디렉토리이다. 일반적으로 "./" 으로 설정이 되어 있으나 직접 설정을 했을 경우 다른 디렉토리가 설정이 되어 있을 수 있다. 

vi /usr/local/lib/php.ini 
extension=mssql.so 를 추가해준다. 
php.ini  파일이 없을 때는 /usr/local/src/(PHP소스디렉토리)/php.ini-dist 파일을 /usr/local/lib 에 복사 해놓으면 된다. 하지만 PHP 컴파일시에 ini 디렉토리를 다른게 설정했다면 그 해당 디렉토리에 복사를 해주면 된다. 

php -m | grep mssql (Apache 를 기동하기 전에 mssql 익스텐션이 올라왔나 확인한다.)
/etc/init.d/httpd restart 또는 /usr/local/apache/bin/apachectl restart 

PHP info 를 확인한다. 
사용자 삽입 이미지

위와 같이 MSSQL 익스텐션이 설정이 되어 있다면 정상적으로 연동이 된것이다 . 
하지만 freetds 설정을 해야 정상적으로 사용이 가능한데 이 부분은 다음에 다루기로 하겠다.



php.ini에서 MS-SQL 연동  
extension_dir = c:/php5/extensions/ 
extension=php_mssql.dll 

$db=mssql_connect("localhost","sa","xxxg"); 
mssql_select_db("suhoi", $db); 

# tar xvfpz freetds-stable.tgz 
# cd  freetds-0.62.4/ 
# ./configure --with-tdsver=8.0 --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared  
--enable-static --prefix=/usr/local/freetds 
# make 
# make install 


./usr/local/freetds/etc/freetds.conf 에 다음을 추가한다 

host = 192.168.1.34  
port = 1433  
tds version = 4.2  

0.52로 올라오면서 그전에 쓰던 interfaces 파일은 암 쓸모가 없어진거 같습니다. 걍 interfaces 파일에다 예전처럼 했다가 3번을 다시 까는등 엄청 고생했씀다. 꼭 이 파일을 이용하세요..  

글구 보면 tds version = 4.2 로 되어 있습니다.  
이거 꼭 확인하시구요....  
여기다 7.0을 적구 난중에 php 소스상에서  
putenv("TDSVER=42");  
일케 해두 됩니다.. 맘에 드는걸루 하세염  

PHP configure 
#./configure --with-mssql=/usr/local/freetds --생략(기존의 PHP 옵션을 준다) 
PHP, apache 설치 


======================================================= 
db_con.php 
======================================================== 

$host="123.123.123.123";    // 접속할 서버 아이피 
$user="sa";                     // 접속 아이디 
$password="!%jell001";    // 접속 패스워드 
$dataname="jeil";            // 접속 디비명 

putenv("MSSQL=/usr/local/freetds");  
putenv("TDSVER=42");  
$db_ms=mssql_connect($host,$user,$password); 
mssql_select_db($dataname, $db_ms)  or die ("DB접속에 실패하였습니다.")

'Brain Trainning > PRG Language' 카테고리의 다른 글

[MSSQL] JDBC 연결  (0) 2011.02.25
[MongoDB] Comparison of data serialization formats  (0) 2011.01.18
Connection String 세팅  (0) 2010.12.03
Programming Windows Phone 7, by Charles Petzold  (0) 2010.10.29
WidowsClient.Net  (0) 2010.05.12
posted by LifeisSimple