Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

쟝이의 세상

<WIN2022 + PHP + SQL Server> 웹 데이터베이스 연동 본문

수업내용

<WIN2022 + PHP + SQL Server> 웹 데이터베이스 연동

zyangee 2024. 8. 28. 12:05

IIS(Internet Information Services) 설치

: Windows Server 2022에 IIS 설치

  1. 서버 관리자 열기
  2. 역할 및 기능 추가 선택
  3. IIS 설치
  4. 필요한 기능 : CGI 추가 후 설치 완료

설치해야하는 기능 확인

CGI(Common Gateway Interface) : 웹 서버와 외부 프로그램 간의 통신을 위한 표준 방법

CGI의 등장으로 웹 서버에 미리 저장된 HTML을 제공하는 것 뿐만 아니라, 사용자의 동적 요청을 CGI규격을 준수한 프로그램에서 처리하고 그 결과를 HTML로 생성하여 웹 서버에 돌려 보낸다.
python, java, php 등의 프로그래밍 언어로 CGI 규격을 준수한 CGI Program을 만들면, 웹 서버에서 CGI Program을 호출하여 클라이언트의 요청에 대해 개별 프로세스를 생성하는 방식이다.

 

PHP 설치

:IIS에서 PHP를 실행할 수 있도록 PHP 설치해 줌

  1. Non-Thread-Safe 버전의 PHP 다운로드
  2. 다운로드한 zip파일을 C:\php 폴더에 압축 해제
  3. php.ini 파일 설정
    • php.ini-development 파일의 이름을 php.ini로 변경
    • extension_dir 경로 설정
      -> extension_dir="C:\php\ext"

 

PHP와 IIS 연동 설정

:IIS에서 PHP를 처리하도록 설정

IIS 사이트에서 PHP 파일을 호출해도 처리할 수 있도록 처리기 매핑을 추가하는 작업이 필요하다.
  1. 서버 관리자에서 IIS 관리자 열기
  2. Default Web Site 클릭하여 열고 처리기 매핑을 열어준다
  3. 모듈 매핑 추가
    • 요청 경로: *.php
    • 모듈: FastCgiModule
    • 실행파일(옵션): C:\php\php-cgi.exe (PHP 설치경로)
    • 이름: PHP via FastCGI

모듈 매핑 추가 완료 화면

 

IIS에서 PHP의 MIME 타입 설정

: IIS에서 PHP 파일을 올바르게 처리하기 위해 MIME 타입 설정

MIME 타입은 서버가 클라이언트에게 전송하는 컨텐츠의 종류를 알려주는 메타데이터(metadata)이다.
웹 브라우저는 MIME 타입을 확인하여 해당 파일의 처리 방법을 결정하기 때문에 웹 서버에서 클라이언트로 전송되는 모든 파일에 MIME 타입이 지정되어야 한다.
  1. IIS 관리자 열기
  2. Default Web Site 클릭하고 MIME 형식 열어주기
  3. 추가
    • 파일 이름 확장명: .php
    • MIME 형식: text/plain

MIME 형식 추가 완료 화면

 

SQL Server 드라이버 설치 및 설정

:PHP와 SQL Server의 연동을 위해 SQL Server 드라이버 설치

  1. https://learn.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15에서 "Download Microsoft Drivers for PHP for SQL Server (Windows)" 설치
  2. C:\에 압축 해제 후
    "php_pdo_sqlsrv_83_nts_x64.dll"
    "php_sqlsrv_83_nts_x64.dll"
    파일 복사하여 C:\php\ext 에 복사 (복사한 후 _83_ntx_x64 는 지워서 이름 변경해주기)
  3. php.ini 파일에
    - extension=php_sqlsrv.dll
    - extension=php_pdo_sqlsrv.dll
    내용 추가해주기

 

PHP코드 작성 및 웹 서버 연동 테스트

  1. C:\inetpub\wwwroot 경로에 phpinfo.php 파일 생성
  2. 코드 작성 및 http://localhost/phpinfo.php 접속
// 웹 서버와 php 연동 테스트 코드
<?php
phpinfo();
?>

웹 서버 접속 시 보여야하는 화면 (php.ini 파일에서 설정한 값)

 

SQL Server 와 웹 서버 연동 테스트

  • SQL Server 에서 데이터베이스와 테이블 생성 후 값 입력
CREATE DATABASE testDB;
USE testDB;

CREATE TABLE post_board
(idx INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
title NCHAR(20) NOT NULL,
content NCHAR(200) NOT NULL,
up_time DATETIME2(7) NOT NULL);

INSERT INTO post_board VALUES
('test1', 'this is test1', '2021-07-08'),
('test2', 'this is test2', '2021-08-01'),
('test3', 'this is test3', '2022-11-18'),
('test4', 'this is test4', '2022-12-29');

 

  • C:\inetpub\wwwroot\pdo_sqlsrv.php 파일 생성
<?php  
   $serverName = "192.168.111.10";  //VMware 해당 컴퓨터의 IP주소 입력
   $database = "testDB";  
  
   $uid = "sa";  
   $pwd = "p@ssw0rd";  
  
   try {  
      $conn = new PDO( "sqlsrv:server=$serverName;Database = $database", $uid, $pwd);   
      $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );   
   }  //DB connection 시도
  
   catch( PDOException $e ) {  
      die( "Error connecting to SQL Server" ); 
   }  //DB connection 실패했을 때
  
   echo "Connected to SQL Server\n";  //해당 내용 출력
  
   $query = 'select * from dbo.post_board';   //쿼리문
   $stmt = $conn->query( $query );   
  	 //conn 객체의 멤버함수 query에 $query를 받음 -> 쿼리문 수행하여 stmt객체에 저장
   while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){   
      print_r( $row );   
   }  //배열값으로 받아 한 행씩 출력, 조건이 false일 경우 while문을 빠져나감
  
   // Free statement and connection resources.   
   $stmt = null;   
   $conn = null;   
?>

 

  • http://192.168.111.10/pdo_sqlsrv.php 접속

 

 

'수업내용' 카테고리의 다른 글

php <배열과 함수>  (2) 2024.09.02
php <조건문 switch, 반복문>  (0) 2024.08.29
php <문자열 출력 echo, 연산자, 변수, 조건문 if>  (6) 2024.08.28
암호화 알고리즘  (0) 2024.08.26
전자상거래 보안  (0) 2024.08.26