CentOS7 + PHP7 + SQL Server 연결 > 기술자료

본문 바로가기
사이트 내 전체검색

기술자료

MSSQL CentOS7 + PHP7 + SQL Server 연결

페이지 정보

댓글 0건 조회 2,201회 작성일 2017-12-04 09:08 ~ 2017-12-07 16:22

본문

1. 서버 상태 확인
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core) 

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

[root@localhost ~]# php -v
PHP 7.0.25 (cli) (built: Oct 29 2017 13:43:03) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.25, Copyright (c) 1999-2017, by Zend Technologies


2. SQL Server 연결을 위해서는 리눅스용 드라이버가 필요합니다.
아래 사이트에서 "CentOS7.tar" 파일을 내려받는다. 현재 최신버전은 5.1.2 입니다.

https://github.com/Microsoft/msphpsql/releases

설치에 사용할 파일은 CentOS7-7.0.tar 이며,  CentOS 7 + PHP 7.0 을 의미합니다.

php_sqlsrv_20171202_01.png

내려받은 압축파일에는 아래와 같이 파일이 들어있으며, 필요한 파일은 "php_sqlsrv_7_nts.so" 파일입니다.

php_sqlsrv_20171202_02.png



3. 파일을 서버에 업로드 합니다.

php_sqlsrv_7_nts.so 파일을 /usr/lib64/php/modules 에 복사합니다.
php_pdo_sqlsrv_7.nts.so 는 오류가 발생하므로 사용하지 않습니다.
[root@localhost ~]# cp /home/happyjung/php_sqlsrv_7_nts.so /usr/lib64/php/modules/

복사 후 권한을 설정한다.
[root@localhost ~]# chmod 755 /usr/lib64/php/modules/php_sqlsrv_7_nts.so 



4. /etc/php.ini  적당한 위치에 내용 추가
[root@localhost ~]# vi /etc/php.ini
extenstion=php_sqlsrv_7_nts.so
;extenstion=php_pdo_sqlsrv_7_nts.so

php_sqlsrv_20171202_03.png



5. SQL Server 연결을 위한 FreeTDS 설치

[root@localhost ~]# yum install freetds-devel libxml2-devel


6. /etc/freetds.conf
[root@localhost ~]# cp -a /etc/freetds.conf /etc/freetds.conf.original
[root@localhost ~]# vi /etc/freetds.conf  끝에 내용 추가
[MSSQL]
        host = IP주소
        port = 1433
        tds version = 8.0   # http://www.happyjung.com/lecture/2604 참고
        client Charset = UTF-8



7. /etc/locales.conf 수정
[root@localhost ~]# cp -a /etc/locales.conf /etc/locales.conf.original
[root@localhost ~]# vi /etc/locales.conf
[default]ser
        date format = %b %e %Y %I:%M:%S:%z%p

를 아래와 같이 변경

[default]
        date format = %Y-%m-%d %H:%M:%S
        charset = euc-kr




8. Apache를 재시작한다.

[root@localhost ~]# systemctl restart httpd



9. php 버전 확인해서 오류가 뜨는지 확인합니다.
[root@localhost ~]# php -v
PHP 7.0.25 (cli) (built: Oct 29 2017 13:43:03) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.25, Copyright (c) 1999-2017, by Zend Technologies



10. MS-SQL 접속 테스트
tsql 파일 위치 확인
[root@localhost ~]# find / -name tsql -print
/usr/bin/tsql

[root@localhost ~]# /usr/bin/tsql --help
Usage:  /usr/bin/tsql [-a <appname>] [-S <server> | -H <hostname> -p <port>] -U <username> [-P <password>] [-I <config file>] [-o <options>] [-t delim] [-r delim] [-D database]

[root@localhost ~]# /usr/bin/tsql -S [freetds.conf에 지정한 서버 이름] -p 1433 -U 디비아이디 -P '비밀번호' -D 디비네임
또는
[root@localhost ~]# /usr/bin/tsql -H xxx.xxx.xxx.xxx -p 1433 -U 디비아이디 -P '비밀번호' -D 디비네임
1> select 필드1 from dbo.테이블 where 필드2='aaa'
2> go
필드1
123456
(1 row affected)



11. SQL Server 모듈 설치 확인
php 파일 위치 확인
[root@localhost ~]# find / -name php -print

php ≤ 5.2
[root@localhost ~]# /usr/bin/php -i | grep mssql

php ≥ 5.3 , 7
[root@localhost ~]#



12. 연결을 위한 PHP 소스

<?php 
$MSSQL_server = "[MSSQL]";   // freetds.conf에 지정한 서버 이름]
$MSSQL_hostT = "HOST_IP";   //  SQL Server IP
$MSSQL_portT = "HOST_IP";   //  SQL Server IP
$MSSQL_name = "TEST";
$MSSQL_id = "USER";
$MSSQL_pw   = 'DBPW';

$mssql_conn = mssql_connect($MSSQL_SERVER, $MSSQL_USER, $MSSQL_PW);
mssql_select_db($MSSQL_NAME, $mssql_conn);

$query = "select * from table";
$result = mssql_query($query, $mssql_conn);
echo mssql_result($rs, 0, 0);
mssql_close($conn);



try {
    $Conn = new PDO("dblib:host=$MSSQL_host:$MSSQL_port; dbname=$MSSQL_name;", $MSSQL_id, $MSSQL_pw);
    $Conn -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
} catch(Exception $e) {
    die( print_r( $e -> getMessage() ) );
}

try {
    $Qry = "SELECT * FROM [TABLE_NAME]"; 
    $Rslt = $Conn -> prepare($Qry); 
    $Rslt -> execute();
    $Rslt_Data = $Rslt -> fetchAll(PDO::FETCH_ASSOC);
} catch(Exception $e) {
    echo $e -> getMessage();
    exit;
}

foreach ( $Rslt_Data as $LIST ) {
    echo "$LIST[FIELD_NAME]<br>";
}
?>



참고자료
http://faq.hostway.co.kr/Linux_WEB/1261
http://oerun.tistory.com/17
http://php.net/manual/en/function.mssql-connect.php
http://noorol.blog.me/220937312032
https://stackoverflow.com/questions/34377338/linux-php-7-0-and-mssql-microsoft-sql
  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.


Total 72건 1 페이지
기술자료 목록
번호 제목
72 MSSQL   588  2018-05-09 22:36  
71 MSSQL   1410  2017-12-21 09:25 ~ 2017-12-21 09:27  
70 MSSQL   1165  2017-12-07 06:35  
69 MSSQL   1198  2017-12-05 23:56 ~ 2017-12-05 23:58  
열람중 MSSQL   2202  2017-12-04 09:08 ~ 2017-12-07 16:22  
67 MSSQL   1133  2017-12-03 07:14  
66 MSSQL   1224  2017-11-28 14:08  
65 MSSQL   963  2017-11-26 05:27  
64 MSSQL   1529  2017-11-26 05:08  
63 MSSQL   1647  2017-11-03 10:45 ~ 2017-11-03 12:37  
62 MSSQL   2081  2017-10-29 23:12 ~ 2017-10-30 00:10  
61 MSSQL   3722  2017-09-22 18:05  
60 MSSQL   1949  2017-08-08 13:47  
59 MSSQL   2665  2017-04-02 13:19  
58 MSSQL   2282  2017-02-15 22:27  
57 MSSQL   4569  2016-12-12 20:58 ~ 2017-09-22 00:00  
56 MSSQL   3170  2016-11-25 01:06  
55 MSSQL   2648  2016-01-25 17:11  
54 MSSQL   8484  2014-09-29 11:28  
53 MSSQL   7444  2013-09-12 16:49  
게시물 검색

회원로그인

계좌이체 or 신용카드 결제하기
해피정닷컴으로 대금결제를 할 수 있습니다

접속자집계

오늘
316
어제
2,445
최대
3,174
전체
4,327,048

회사명: 해피정닷컴   사업자번호: 119-05-36414   전화: 070-7600-3500   팩스: 02-865-3528   주소: 08394 서울시 구로구 디지털로 242 한화비즈메트로1차 1502호
대표: 정창용   개인정보보호책임자: 정창용   통신판매업신고번호: 2014-서울구로-0074 [사업자등록정보확인]   건강기능식품영업신고번호 제2018-0080452호
Copyright 2001~2018 해피정닷컴. All Rights Reserved.