Skip to content

조회 수 10754 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

LINUX OS 에 PHP 를 사용하면서 원격의 MS-SQL에 연결하는 방법에 대한 내용입니다.

웹상에 관련 자료가 있긴 했지만, 저의 작업 환경과 틀려서인지, 세부 내용이 잘못 기재되어 있는것들이 많아, 어렵게 작업을 성공한  이후 나름대로 관련 내용을 정리했습니다.


해당 작업을 하는 분들에게 조금이나마 도움이 되었으면 합니다.


현존하는 LINUX + PHP 와 MS-SQL 연결 방법


1. freetds 을 이용한 방법

2. Sybase Client Library 을 이용한 방법

3. odbc 를 이용한 방법


저는 관련 내용이 많이 배포되어 있는 FREETDS 를 이용한 방법을 사용했습니다.


- 작업 환경 -

Linux REDHAT 9.0

PHP 4.3.5


WINDOWS 2000 Server

MS-SQL 2000


FREETDS를 쓰면 좋은점

1. 속도가 빠르다.

2. 윈도우쪽은 전혀 건들지 않아도 된다. (리퀘스트브로커 같은거 안깔아두 된다)

3. php 에서 top 이라든가 distinct 등의 구문이 먹지 않는데 freetds 는 아무 문제가 없다.

4. 예전엔 한글 지원이 되지 않았던 문제점이 있었으나, 그 문제 또한 해결되었다.


설치 방법


1. www.freetds.org 에서 최신 버전을 다운받는다. (현재 0.63까지 나와 있음)

   freetds-0.63.tar


2. /usr/local/ 하단에 압축을 풀고 설치한다.

   (전 /usr/local/freetds-0.63 의 디렉토리명을 /usr/local/freetds 로 변경했는데, 보기 쉽게 할려는 것이지 설치에 반드시 필요한 사항은 아닙니다.)


# cd freetds

#./configure --with-tdsver=7.0 --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared --enable-static

# make

# make install



** --with-tdsver=7.0 일경우 mssql 7.0 이며 mssql 2000일경우는 8.0으로 한다.

3./usr/local/freetds/freetds.conf 에 연결할 ms-sql 에 대한 환경 설정을 확인한다.

[MyServer2k]

        host = ntmachine.domain.com

        port = 1433

        tds version = 4.2


위 내용을 확인 후 host 정보를 변경합니다.

tds version = 4.2 로 되어 있는것을 꼭 확인하세요.


4. php 새로 컴파일하기

 #./configure --with-sybase=/usr/local/freetds --생략..

 # make && make install

 # cp php.ini /usr/local/lib/php.ini


5. APACHE 재구동

 # /usr/local/apache/bin/apachectl stop

 # /usr/local/apache/bin/apachectl start


 이전까지 php 컴파일시 /usr/local/apache/bin/apachec시 restart 로 작업을 해왔었는데,

 이 sybase 작업시에 그렇게 하니까, 아파치 데몬이 작동안되거나, php 인식이 되지 않는등의 문제점이 많이 발생되더군요..

 그런 경우엔 반드시 아파치 재구동을 할때 먼저 stop 하고 start 하십시오.

 본인은 이것 때문에 좀 혼란스럽기도 했습니다.

아파치 재구동시킨 후 phpinfo() 확인해보면


sybase

 

Sybase Support

 enabled 

Allow Persistent  Links

 Yes 

Persistent Links

 0/unlimited 

Total Links

 0/unlimited 

Application Name

 PHP 4.0 

Client API Version

 $Id: dblib.c,v 1.187.2.4 2005/01/07 16:34:39 jklowden Exp $ 


  와 같은 내용이 나타나면 성공한 것입니다. 


6. 최종 테스트

-- PHP 소스 페이지 --


<?php

putenv("FREETDSCONF=/usr/local/freetds/freetds.conf");

putenv("TDSVER=42"); // tds 버전을 여기다 적어두 된다


$hostname = "MyServer2k"; // freetds.conf 에서 적어준걸로..

$username = "id";

$password = "xxxx";

$dbname = "dbname";

$connection = mssql_connect($hostname,$username,$password);

mssql_select_db($dbname);


echo("<table border=1>");

$query = "select * from test" ;

$query_result = mssql_query($query) ;

$number_rows = mssql_num_rows($query_result) ;

$number_fields = mssql_num_fields($query_result) ;


for ($row_number=0; $row_number<=$number_rows-1; $row_number++)

{

    print "<tr>";

    for ($field_number=0; $field_number<=$number_fields-1; $field_number++)

    {

        print "<td>" . mssql_result($query_result, $row_number, $field_number) . "</td>" ;

    }

    print "</tr>";

}

print "</table>";

mssql_close($connection);

?>


*  putenv("FREETDSCONF=/usr/local/freetds/freetds.conf");

관련 자료를 찾아보면 putenv("mssql=/usr/local/freetds"); 로 기재하는 내용이 대부분이던데, 그렇게 해서 실행되지 않아 삽질을 하다 결국엔 php.net 에 있는 내용을 찾아보다 위와 같이 ms_sql 관련 명령어를 사용하기 위해 freetds.conf 파일을 putenv 해야 하는것을 알게 되었다. 웹상의 자료에 다른 내용들은 다양하게 기재되어 있었는데, 이 사항이 없는것을 보니, 버전의 차이인지 이해가 가질 않으나, 설치시 기본 매뉴얼을 참조하는것이 가장 급선무인것을 이번 기회에 다시 한번 느끼게 되었다.. freetds.org 에도 관련 매뉴얼이 없는것 같고, 하여튼 이 내용을 몰라 많이 고생했다.


이렇게 하면 LINUX + PHP에서 원격의  MS-SQL 연결이 되는것을 확인할수 있을것입니다.


참고 사이트

http://www.php.net/manual/en/ref.mssql.php   ; 리눅스에서 ms_sql 관련 함수 사용에 관한 내용

http://database.sarang.net/database/mssql/php/#g ; mssql 관련 기본적인 내용


  1. No Image 19Jul
    by ADMINPLAY
    2009/07/19 by ADMINPLAY
    Views 11671 

    Ubuntu 7.04 Server 에 Zend Optimizer 3.2.8 설치하기!

  2. No Image 18Jul
    by ADMINPLAY
    2009/07/18 by ADMINPLAY
    Views 11450 

    SENDMAIL SPAMASSASSIN 관리 local.cf

  3. No Image 18Jul
    by ADMINPLAY
    2009/07/18 by ADMINPLAY
    Views 11557 

    PHP 언어디코딩

  4. No Image 18Jul
    by ADMINPLAY
    2009/07/18 by ADMINPLAY
    Views 9701 

    php.ini 옵션 한글설명

  5. No Image 29Jun
    by ADMINPLAY
    2009/06/29 by ADMINPLAY
    Views 14932 

    [PHP] 정규 표현식 정리

  6. No Image 04Jun
    by ADMINPLAY
    2009/06/04 by ADMINPLAY
    Views 8270 

    Warning: main(): URL file-access is disabled in the server

  7. No Image 04Jun
    by ADMINPLAY
    2009/06/04 by ADMINPLAY
    Views 9045 

    call undefined mysql connect 와 같은 mysql 라이브러리를 호출하지 못할경우 조치법

  8. No Image 04Jun
    by ADMINPLAY
    2009/06/04 by ADMINPLAY
    Views 8468 

    call undefined mysql connect 에러 발생시 해결 방안

  9. No Image 04Jun
    by ADMINPLAY
    2009/06/04 by ADMINPLAY
    Views 7415 

    php.ini 설명

  10. No Image 04Jun
    by ADMINPLAY
    2009/06/04 by ADMINPLAY
    Views 10754 

    Freetds 설치 참고 (sybase)

  11. No Image 04Jun
    by ADMINPLAY
    2009/06/04 by ADMINPLAY
    Views 9280 

    DBA: Could not find necessary header file 발생시 대처법

  12. No Image 04Jun
    by ADMINPLAY
    2009/06/04 by ADMINPLAY
    Views 8164 

    php 버전 정보 숨기기

  13. No Image 04Jun
    by ADMINPLAY
    2009/06/04 by ADMINPLAY
    Views 10284 

    php 명령어 이용 phpinfo 확인

  14. No Image 04Jun
    by ADMINPLAY
    2009/06/04 by ADMINPLAY
    Views 10995 

    php.ini 세션유지 시간 설정

  15. php 5.1.4 인데 ZipArchive() 사용하기 --enable-zip

  16. PHP 컴파일하고 Make 할때 lltdl을 찾을 수 없다면서 중지되는 경우 해결법 + mcrypt 설치법

  17. No Image 01Jun
    by ADMINPLAY
    2009/06/01 by ADMINPLAY
    Views 9093 

    Fedora 및 CentOs 에서 Imap PHP 연동시 에러가날때

  18. No Image 01Jun
    by ADMINPLAY
    2009/06/01 by ADMINPLAY
    Views 16903 

    php에서 curl 설치하기

  19. No Image 01Jun
    by ADMINPLAY
    2009/06/01 by ADMINPLAY
    Views 10151 

    ini_set("allow_url_fopen", 1); -- allow_url_fopen = Off 일때 해결법

  20. No Image 18May
    by ADMINPLAY
    2009/05/18 by ADMINPLAY
    Views 9633 

    freetds 설치 (php로 외부 MS-SQL 서버에 접속 사용하기)

Board Pagination Prev 1 2 3 Next
/ 3

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234