윈도우에서 Apache + PHP + Oracle 연동하기

1. HTTP 설치

http://www.apachelounge.com/download/

32/64비트에 맞춰서 다운로드하고

위 페이지 중간 쯤에 있는 Visual Studio 관련 링크 화일을 다운로드 및 설치 합니다.

https://www.microsoft.com/en-us/download/details.aspx?id=49984

Visual Studio 관련화일은 다운로드 받아서 실행하면 그대로 윈도우에 설치가 되며,

아파치 화일은 다운로드 후 압축을 풀어 적당한 위치에 옮겨둡니다.

저는 C:\Apache24 로 지정하였습니다.

고급설정 환경변수에서 시스템 환경변수 중 PATH 에 C:\Apache24\bin 을 추가해주고,

커맨드 창에서

– 서비스 등록

> httpd -k install

– 서비스 실행

> httpd -k start

한 후 브라우저에서 localhost 라고 치면 홈페이지가 나오는 것을 확인하실 수 있습니다.

참고로

– 서비스 종료

> httpd -k stop

– 서비스 제거

> httpd -k uninstall

2. PHP 설치

http://windows.php.net/download/

Thread 버전 다운받기

마찬가지로 다운로드 받은 화일 압축을 풀어준 후 적당한 곳에 옮겨둡니다.

저는 여러 폴더 만들기가 귀찮아서

C:\Apache24\php56

이라고 만들어 옮겨 두었습니다.

php 폴더 내에 있는 php.ini-production 화일을 php.ini로 바꿔서 Windows 폴더에 옮겨 줍니다.

이 후 아래 부분들을 수정해 줍니다.

display_errors = On

extension_dir = “C:\Apache24\php56\ext”

date.timezone = Asia/Seoul

extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client

또한 httpd.conf 도 수정합니다.

LoadModule php5_module “c:/Apache24/php56/php5apache2_4.dll”
AddHandler application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir “C:/Windows”

<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

이 후 아파치 재시작해서 php가 제대로 작동하는지 확인 바랍니다.

3. Oracle InstantClient

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

오라클 instant Client basic 과 SQL*Plus 화일을 다운로드 받아서 압축을 푼 후

같은 폴더에 몰아 둡니다.

역시 귀찮은 관계로 C:\Apache24\instantclient_12_1 이라는 곳에 몰아 넣었습니다.

그 다음으로 여기 폴더에 있는 화일 중 “o”로 시작하는 dll 화일들을 저는 귀찮아서 모두를

C:\Apache24\bin 폴더에 몰아 넣습니다.

이 후 고급설정 환경변수에서 시스템 환경변수 중

PATH 에 C:\Apache24\instantclient_12_1

ORACLE_HOME 에 C:\Apache24\instantclient_12_1

TNS_ADMIN 에 C:\Apache24\instantclient_12_1

을 추가해주고,

커맨드 창에서

> sqlplus user/pass@192.168.1.2/orcl

로 접속이 되는지 확인합니다.

물론 위와 같은 오라클 서버가 잘 돌아가고 있다는 전제하에서 입니다.

접속이 된다면…..

4. 설정 잡기

아파치를 재시작해보고

phpinfo(); 를 해서 OCI8 이 나오는지 확인 해보고

여기서 안 나오면 대략 난감.. (저도 이 부분에서 만 하루를 헤맸습니다.)

5. 테스트해보기

<?php

$conn = oci_connect(“USER”, “PASS”, "192.168.1.2:1521/orcl");

if (!$conn) {

$m = oci_error();

echo $m['message'], "\n";

exit;

}

else {

echo "Connected to Oracle!";

}

/* multi rows */

$query = "SELECT COLUMN1,COLUMN2 FROM TABLENAME”;

$stid = oci_parse($conn, $query);

oci_execute($stid);

while (($row = oci_fetch_array($stid, OCI_BOTH))) {

echo $row[0] . " : " . $row[1] . "<br>";

}

echo "Total Count : " . oci_num_rows($stid);

oci_free_statement($stid);

oci_close($conn);

?>

잘 나온다면 성공한 겁니다. 축하합니다. ㅠㅠ