Server관련/Sever(OS)

Windows Server 2012 R2 IIS에 PHP 설치 및 MSSQL연결 +(WebKnight/AWStats링크만)

saltdoll 2017. 10. 14. 07:45
반응형

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설치

Web Platform Installer 프로그램을 다운로드 받고, 설치해 주시면,

IIS Manager(또는 Computer Management)를 실행해 보시면 추가된 모습이 보일것 입니다.

https://www.microsoft.com/web/downloads/platform.aspx

Install this extension을 클릭해서 설치파일 다운로드

 

 

 

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가지 제품이 자동 선택이 된다.]

PHP 5.x버전 Add를 누르고, Install 버튼으로 설치

 

[ 4 Items to be installed를 누르면, Cart에 실린 4가지 설치할 제품들]

PHP 연관된 모듈이 자동 선택

 

[여기서, "PHP Manager for IIS" 제품은 설치에 실패함. (win 10 상황)]

 

[설치 동의 질문 화면]

Prerequisites 안내

 

[설치 시작 화면]

인터넷을 통해서 자동 설치

 

[설치된 제품과 실패한 제품의 목록]

여기서, ". NET Framework 3.5 기능"을 추가해 주고 다시 진행하면 된다고 하는데,
저는 Win 10에서 NET 3.5도 있어도 설치가 안되네요.

설치 성공과 실패된 항목이 표시 됩니다.

 

[설치된 제품들]

SQL드라이브 + PHP + PHP Cashe 설치

 

[설치 실패한 제품]

IIS를 위한 PHP 매니저는 크게 필요는 없습니다.

 

여기서 phpinfo()로 확인을 하면, MSSQL와 연결이 잘 되어 있다고 나온다.

phpinfo() 확인한 설치된 sql 연결모듈

 

그러나, 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_rsqlsrv_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_rsqlsrv_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_rsqlsrv_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_rsqlsrv_errors(), true));
}

$sql "SELECT FirstName, LastName FROM SomeTable";
$stmt sqlsrv_query$conn$sql );
if( 
$stmt === false) {
    die( 
print_rsqlsrv_errors(), true) );
}

while( 
$row sqlsrv_fetch_array$stmtSQLSRV_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 소스

db.mssql.php
0.00MB

 

 

 

추가로, PHP의 개발시 Error를 보는 방법 포스트도 남깁니다.

2018.11.09 - [Server관련/Sever(OS)] - IIS에 PHP 7.2 + SQL 연결하기 + PHP 에러 보기 설정 + SQL한글 문제

 

IIS에 PHP 7.2 + SQL 연결하기 + PHP 에러 보기 설정 + SQL한글 문제

윈도우 10 또는 Window Server 2012 R2에 PHP 7.2 + SQL SERVER 연결 드라이브 설정하기 기본적으로 IIS에 Web Platform Installer가 설치되어 있어야 합니다. (아래 포스트 참조)  IIS에 Web Platform설치법 20..

blog.edit.kr

 

 

 

 

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 설치하기

 

 

 

 

 

 

 

 

반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)