쟝이의 세상
<WIN2022 + PHP + SQL Server> 웹 데이터베이스 연동 본문
IIS(Internet Information Services) 설치
: Windows Server 2022에 IIS 설치
- 서버 관리자 열기
- 역할 및 기능 추가 선택
- IIS 설치
- 필요한 기능 : CGI 추가 후 설치 완료
CGI(Common Gateway Interface) : 웹 서버와 외부 프로그램 간의 통신을 위한 표준 방법
CGI의 등장으로 웹 서버에 미리 저장된 HTML을 제공하는 것 뿐만 아니라, 사용자의 동적 요청을 CGI규격을 준수한 프로그램에서 처리하고 그 결과를 HTML로 생성하여 웹 서버에 돌려 보낸다.
python, java, php 등의 프로그래밍 언어로 CGI 규격을 준수한 CGI Program을 만들면, 웹 서버에서 CGI Program을 호출하여 클라이언트의 요청에 대해 개별 프로세스를 생성하는 방식이다.
PHP 설치
:IIS에서 PHP를 실행할 수 있도록 PHP 설치해 줌
- Non-Thread-Safe 버전의 PHP 다운로드
- 다운로드한 zip파일을 C:\php 폴더에 압축 해제
- php.ini 파일 설정
- php.ini-development 파일의 이름을 php.ini로 변경
- extension_dir 경로 설정
-> extension_dir="C:\php\ext"
PHP와 IIS 연동 설정
:IIS에서 PHP를 처리하도록 설정
IIS 사이트에서 PHP 파일을 호출해도 처리할 수 있도록 처리기 매핑을 추가하는 작업이 필요하다.
- 서버 관리자에서 IIS 관리자 열기
- Default Web Site 클릭하여 열고 처리기 매핑을 열어준다
- 모듈 매핑 추가
- 요청 경로: *.php
- 모듈: FastCgiModule
- 실행파일(옵션): C:\php\php-cgi.exe (PHP 설치경로)
- 이름: PHP via FastCGI
IIS에서 PHP의 MIME 타입 설정
: IIS에서 PHP 파일을 올바르게 처리하기 위해 MIME 타입 설정
MIME 타입은 서버가 클라이언트에게 전송하는 컨텐츠의 종류를 알려주는 메타데이터(metadata)이다.
웹 브라우저는 MIME 타입을 확인하여 해당 파일의 처리 방법을 결정하기 때문에 웹 서버에서 클라이언트로 전송되는 모든 파일에 MIME 타입이 지정되어야 한다.
- IIS 관리자 열기
- Default Web Site 클릭하고 MIME 형식 열어주기
- 추가
- 파일 이름 확장명: .php
- MIME 형식: text/plain
SQL Server 드라이버 설치 및 설정
:PHP와 SQL Server의 연동을 위해 SQL Server 드라이버 설치
- 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)" 설치
- C:\에 압축 해제 후
"php_pdo_sqlsrv_83_nts_x64.dll"
"php_sqlsrv_83_nts_x64.dll"
파일 복사하여 C:\php\ext 에 복사 (복사한 후 _83_ntx_x64 는 지워서 이름 변경해주기) - php.ini 파일에
- extension=php_sqlsrv.dll
- extension=php_pdo_sqlsrv.dll
내용 추가해주기
PHP코드 작성 및 웹 서버 연동 테스트
- C:\inetpub\wwwroot 경로에 phpinfo.php 파일 생성
- 코드 작성 및 http://localhost/phpinfo.php 접속
// 웹 서버와 php 연동 테스트 코드
<?php
phpinfo();
?>
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 |