Server관련/Sever(OS)

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

saltdoll 2018. 11. 9. 08:20
반응형

윈도우 10 또는 Window Server 2012 R2 서버 OS 환경에
PHP 7.2 + SQL SERVER 연결 드라이브 설정하기 방법을 정리해 둡니다.

IIS + PHP

기본적으로 IIS에 Web Platform Installer가 설치되어 있어야 합니다. (설치가 안돼 있다면, 아래 포스트 참조)

 IIS에 Web Platform설치법 
2017/10/14 - [Server관련/Sever(OS)] - Windows Server 2012 R2 IIS에 PHP 설치 및 MSSQL연결 +(WebKnight/AWStats링크만) 

 

Web Platform Installer가 설치되어 있다면, 아래와 설치를 진행하시면 됩니다.

Web Platform Installer 실행

 

PHP 7.2  + SQL Drive 설치

1) PHP 7.2 항목을 선택

Web Platform Installer에서 'PHP'를 검색해서,

- Microsoft Drivers 5.3 (x64) for PHP v7.2 for SQL Server in IIS
- Windows Cache Extension 2.0 (x64) for PHP 7.2
  (해당 항목에 연관된 PHP 7.27등 자동 설치)

Web Platform Installer

 

2) Install를 누르면 설치될 항목을 보여준다.

Windows Cache Extension 2.0 (x64) for PHP 7.2를 선택하면,
연계된 PHP7.2.2(x64)와 PHP Manager for IIS를 설치한다고 메시지가 나옵니다.

Web Platform Installer

 

3) Prerequisites항목 설치

사전에 설치되어야 하는 부분들에 대한 항목들을 보여줍니다.

Web Platform Installer

 

4) PHP Manager for IIS 오류

PHP Manager for IIS은 설치가 되지 않지만, 사용에는 큰 문제는 없습니다.

Web Platform Installer

 

설치 완료!! (IIS host 설정은 생략)

 

 

 

 

PHP 에러 보기 설정

PHP 개발에서 에러가 날 때, 해당 내용에 대해서 확인이 필요합니다.

기본적으로 IIS에서 PHP에러를 표시하지 않고, 에러 번호(500번 등)로만 나타난다.

Live 운영 서버에서 에러를 보지 못하게 하는 것은 좋은 설정이지만,

개발 당시에 에러를 보지 못한다는 것은 너무도 참혹(?)한 설정입니다.

 

PHP의 에러를 보기 위해 다음과 같은 설정을 변경하시면 됩니다.

먼저, php.ini의 설정 위치를 찾기 위해서

<?php phpinif(); ?> 소스 페이지를 만들어서,

설정 파일(php.ini) 위치 Path을 확인해 볼 수 있습니다.

 

1) PHP의 php.ini위치 값 확인

phpinfo() 함수로 보여주는 PHP의 모든 설정 정보로 필요한 정보를 얻을 수 있습니다.

phpinfo 정보

 

2) PHP 에러를 보여주는 부분의 설정을 활성화

C:\Program Files\PHP\v7.2\php.ini의 display_errors = On로 변경로 변경 후 주석 제거

 

3) Site 호스트의 설정

IIS 호스트를 선택 후에, Configurat Editor를 선택해 줍니다.

IIS의 configurationEditor

 

4) 오류에 대한 항목 설정

세션 항목 중에 httpErrors항목을 선택합니다.

httpError세션 선택

 

5) 상세 오류 정보를 보여주기 설정

httpErrors세션의 errorMode를 Detailed로 변경합니다.

errorMode 변경

 

다음과 같이 설정하면, PHP의 에러 메시지를 확인할 수 있습니다.

 

만약, PHP실행 URL을 서버 로컬 브라우저로 확인이 가능하시다면, 
보안을 위해서, ERROR를 서버에서 확인할 수 있는 DetailedLocalOnly를 추천드립니다.

로컬에서만 error르 보여줍니다.

 

 

 

 

SQL 사용 시 한글 문제 (깨짐, 검색 안됨 등)

PHP에서 SQL 서버를 사용하다 보면, 한글 검색이 안되거나, 한글이 깨져서 보이는 현상이 있습니다.

예) SELECT TOP 10 keyword FROM tablename WHERE keyword like '%한글%'

 

해당 '한글 키워드' 검색 시, 쿼리의 결과를 가져오지 못합니다.

 

이를 해결하기 위해서는 PHP의 DB 연결 함수인 sqlsrv_conenct($serverName, $connectionInf)의

$connectionInfo의 정보 값에 문자셋의 정보를 UTF-8을 전달해 줘야 합니다.

=>   'CharacterSet'=>'UTF-8'가 추가되어야 합니다.

 ./classes/db/DBMssql.class.php
$result = @sqlsrv_connect($connection["db_hostname"], array('Database' => $connection["db_database"], 'UID' => $connection["db_userid"], 'PWD' => $connection["db_password"], 'CharacterSet' => 'UTF-8')); 

 

참고: DB를 mssql 사용시 한글 문제

sqlsrv_connect 라이브러리: http://php.net/manual/en/function.sqlsrv-connect.php

resource sqlsrv_connect ( string $serverName [, array $connectionInfo ] ) 
 <?php
$connectionInfo = [
    
'CharacterSet' => 'UTF-8',
];
$conn sqlsrv_connect($serverName$connectionInfo);
?>

Beware though that only two options exist:
- SQLSRV_ENC_CHAR (constant) for ANSI, which is the default
- 'UTF-8' (string) for Unicode

 

 

 

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