Window 2012 R2의 IIS에 PHP 모듈을 설치하는 방법은 몇 가지 있습니다.
그중에서 가장 설치하는 쉽게 하는 방법은 Web Platform Installer을 이용하는 것입니다.
Web Platform Installer에서 검색어로 'PHP'로 검색하시면, 다양한 설치 패키지나 나타납니다.
(또 다른 방법은 PHP 및 SQL SERVER Driver를 직접 다운로드하여서 설치하는 방법)
Web Platform Installer이 설치되어 있는지 확인 방법은, IIS Manager의 확인하실 수 있습니다.
만약, Web Platform Installer가 설치가 안되 있다면 설치하시면 됩니다.
Web Platform Installer설치
Web Platform Installer 프로그램을 다운로드 받고, 설치해 주시면,
IIS Manager(또는 Computer Management)를 실행해 보시면 추가된 모습이 보일것 입니다.
https://www.microsoft.com/web/downloads/platform.aspx
PHP 5.4, PHP5.5, PHP7.0이 있는데, PHP 7 경우 DB 연결 및 많은 부분이 변경이 된 버전입니다.
이 포스트에서는 PHP 5.6.31를 설치를 하도록 합니다.
[ Advice ]
여러분은 최선 버전인 PHP v7.x를 추천드립니다.
제가 PHP 5.x를 사용한 이유는 과거 소스의 호환성 때문이었습니다.
[ IIS의 PHP 5.6.31을 선택하면, 4가지 제품이 자동 선택이 된다.]
[ 4 Items to be installed를 누르면, Cart에 실린 4가지 설치할 제품들]
[여기서, "PHP Manager for IIS" 제품은 설치에 실패함. (win 10 상황)]
[설치 동의 질문 화면]
[설치 시작 화면]
[설치된 제품과 실패한 제품의 목록]
여기서, ". NET Framework 3.5 기능"을 추가해 주고 다시 진행하면 된다고 하는데,
저는 Win 10에서 NET 3.5도 있어도 설치가 안되네요.
[설치된 제품들]
[설치 실패한 제품]
여기서 phpinfo()로 확인을 하면, MSSQL와 연결이 잘 되어 있다고 나온다.
그러나, SQL Server와 연결하려고 mssql_connect()를 사용 시 에러가 발생합니다.
이유는 해당 함수가 없다는 에러는 발견됩니다.
확인해 본 결과,
Microsoft's Extension은 sqlsrv_connect()을 이용해서 연결해야 한다가 나와 있었네요.
이유를 알지 못했을 때, 정말 고생했던 것 같네요.
(참고: https://stackoverflow.com/questions/9986804/php-fatal-error-call-to-undefined-function-mssql-connect )
EDIT given new info: You are using the wrong function. mssql_connect() is part of the Mssql extension. You are using microsoft's extension, so use sqlsrv_connect() , for the API for the microsoft driver, look at SQLSRV_Help.chm which should be extracted to your ext directory when you extracted the extension. |
http://php.net/manual/en/function.sqlsrv-connect.php
<?php $serverName = "serverName\sqlexpress"; //serverName\instanceName $serverName = "locslhost"가능 $connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn ) { echo "Connection established.<br />"; }else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true)); } ?> |
http://php.net/manual/en/function.sqlsrv-query.php
<?php $serverName = "serverName\sqlexpress"; $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" ); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn === false ) { die( print_r( sqlsrv_errors(), true)); } $sql = "INSERT INTO Table_1 (id, data) VALUES (?, ?)"; $params = array(1, "some data"); $stmt = sqlsrv_query( $conn, $sql, $params); if( $stmt === false ) { die( print_r( sqlsrv_errors(), true)); } ?> |
http://php.net/manual/en/function.sqlsrv-fetch-array.php
<?php $serverName = "serverName\instanceName"; $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password"); $conn = sqlsrv_connect( $serverName, $connectionInfo ); if( $conn === false ) { die( print_r( sqlsrv_errors(), true)); } $sql = "SELECT FirstName, LastName FROM SomeTable"; $stmt = sqlsrv_query( $conn, $sql ); if( $stmt === false) { die( print_r( sqlsrv_errors(), true) ); } while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) { echo $row['LastName'].", ".$row['FirstName']."<br />"; } sqlsrv_free_stmt( $stmt); ?> |
값을 배열로 쉽게 넘기는 함수 만들기
function dbget($conn, $sql) {
$tmp = [];
if ( ($result = sqlsrv_query($conn, $sql)) !== false) {
while ($rs = sqlsrv_fetch_array($result)) { // 한 Rows씩 넘겨준다.
$tmp[] = $rs;
}
}
return $tmp;
}
넘겨받은 결과 값은 $tmp[0]['필드명']; 또는 $tmp[0][0]; 형태로 사용 가능합니다.
[ 사용 예제 ]
$select_query = 'SELECT * FROM CL_CONNECTION_INFO ';
$lists = dbget($conn, $select_query);
echo 'Total Rows: '.count($lists).'<br/>';
for($i = 0; $i < count($lists); $i++) {
echo $lists[$i]['CATALOG'].' | '.$lists[$i]['CL_COMP_ID'].' | ';
echo $lists[$i]['COMP_CODE'].' | '.$lists[$i]['DATASOURCE'].'<br />';
}
MSSQL DB의 연결 Libary 소스
추가로, PHP의 개발시 Error를 보는 방법 포스트도 남깁니다.
2018.11.09 - [Server관련/Sever(OS)] - IIS에 PHP 7.2 + SQL 연결하기 + PHP 에러 보기 설정 + SQL한글 문제
PHP sqlsrv 쿼리
출처: https://stackoverflow.com/questions/23131514/php-sqlsrv-query-to-database |
$conn_array = array ( "UID" => "sa", "PWD" => "root", "Database" => "nih_bw", ); $conn = sqlsrv_connect('BILAL', $conn_array); if ($conn){ echo "connected"; if(($result = sqlsrv_query($conn,"SELECT * FROM routines")) !== false){ while( $obj = sqlsrv_fetch_object( $result )) { echo $obj->colName.'<br />'; } } }else{ die(print_r(sqlsrv_errors(), true)); } |
참고: windows server 2012 구축기 - PHP 설치하기
[ 추가 정보 - 유익한 링크 ]
windows server 2012 구축기 – WebKnight 설치
windows server 2012 구축기 – AWStats 설치하기
'Server관련 > Sever(OS)' 카테고리의 다른 글
Window 10 (multi-edition) 과 Windows 10 (multi-edition) VL 차이점 (0) | 2017.12.01 |
---|---|
IIS 로그분석 LogParser (0) | 2017.11.29 |
Windows 10 배달최적화 파일 삭제 (패치 업데이트 공유) (0) | 2017.11.09 |
live.com 로그인 화면이 한글로 나올때, 기본 영어로 변경법 (0) | 2017.11.04 |
IIS Log 파일 삭제하기 (Managing IIS Log File Storage) (0) | 2017.10.04 |
(추천) sendmail 관련:시작, 중지 이메일 추가 , /etc/aliases, 메일 서버 차단방지 (0) | 2017.09.09 |
리눅스 파일 내용만 삭제 cat /dev/null (0) | 2017.09.09 |
Windows 10 매일 리부팅 스케쥴링 (0) | 2017.05.23 |
(로그인하지 않으셔도 가능)