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건 4 페이지
  • RSS
기술자료 목록
2573
그누보드   2626  2022-12-31 09:25 ~ 2024-02-05 13:25  
2572
MySQL   3604  2022-12-28 21:09 ~ 2022-12-29 06:32  
2571
SQL   4319  2022-12-26 10:51 ~ 2022-12-26 11:52  
2570
호스팅   3478  2022-12-16 12:22 ~ 2022-12-26 19:57  
2569
Apple   3495  2022-12-13 21:15  
2568
일반   2806  2022-12-09 12:41 ~ 2022-12-09 12:49  
2567
일반   2686  2022-12-09 10:12 ~ 2022-12-26 18:20  
2566
Apple   2564  2022-12-09 06:07 ~ 2022-12-09 06:22  
2565
일반   2560  2022-12-08 17:05 ~ 2023-06-27 18:12  
2564
JavaScript   4897  2022-12-06 10:30 ~ 2022-12-06 13:11  
2563
MySQL   2879  2022-12-02 15:40 ~ 2022-12-02 15:41  
2562
MySQL   5634  2022-11-22 07:37  
2561
MySQL   2918  2022-11-22 07:34 ~ 2022-12-02 12:14  
2560
MySQL   2904  2022-11-21 12:10 ~ 2022-11-21 12:18  
2559
SQL   3935  2022-11-18 16:39 ~ 2023-08-24 00:54  
2558
MySQL   2987  2022-11-16 19:05 ~ 2023-03-03 17:04  
2557
PHP   3456  2022-11-16 18:17  
2556
PHP   3536  2022-11-15 11:55 ~ 2022-11-18 17:26  
2555
Android   3242  2022-11-13 17:31 ~ 2022-11-15 11:13  
2554
그누보드   3275  2022-11-10 20:41 ~ 2022-11-14 01:03  

검색

해피정닷컴 정보

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

회사명: 해피정닷컴   대표: 정창용   전화: 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.