CentOS 7 + PHP 7 + SQL Server (MSSQL) 연결 > 기술자료 | 해피정닷컴

CentOS 7 + PHP 7 + SQL Server (MSSQL) 연결 > 기술자료

본문 바로가기

사이트 내 전체검색

CentOS 7 + PHP 7 + SQL Server (MSSQL) 연결 > 기술자료

MSSQL CentOS 7 + PHP 7 + SQL Server (MSSQL) 연결

페이지 정보


본문

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_7_nts.so" 파일입니다.





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





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   # https://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 2,633건 1 페이지
  • RSS
기술자료 목록
2633
MySQL   195  2024-03-29 14:14 ~ 2024-03-29 14:14  
2632
그누보드   520  2024-02-23 18:40 ~ 2024-02-24 06:13  
2631
JavaScript   533  2024-02-16 18:50 ~ 2024-02-16 20:37  
2630
Java   457  2024-02-06 16:49  
2629
PHP   623  2024-02-06 16:42  
2628
호스팅   588  2024-01-29 12:54  
2627
PHP   711  2024-01-26 11:04 ~ 2024-01-26 11:13  
2626
MySQL   944  2024-01-08 17:37 ~ 2024-03-14 16:00  
2625
SQL   873  2024-01-08 12:36  
2624
영카트   1094  2024-01-04 14:57  
2623
일반   1876  2023-12-15 18:33  
2622
Android   1552  2023-11-30 18:48 ~ 2023-11-30 19:41  
2621
전자결제   2713  2023-11-23 19:53  
2620
PHP   1980  2023-11-20 10:56 ~ 2023-11-20 11:14  
2619
Linux   1806  2023-11-09 19:55  
2618
그누보드   1848  2023-11-06 20:38  
2617
Linux   1818  2023-11-01 21:41 ~ 2023-11-02 10:30  
2616
영카트   1914  2023-10-07 23:31  
2615
SNS   2886  2023-09-24 17:56  
2614
ClassicASP   2601  2023-09-14 08:38  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: 서울센터 (08393) 서울시 구로구 디지털로32가길 16 파트너스타워2차 1206-280호
        대전센터 (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 지원1동 205호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 2014-서울구로-0074 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.