이번 글에서는 PHP(XAMPP)와 Oracle (Oracle Express) 연동에 대해서 설명합니다.
준비
1. XAMPP[xampp-windows-x64-7.1.33-1-VC14-installer.exe]를 설치합니다 (VC 14 로 된것을 설치해야 합니다).
2. Oracle Install Client 압축을 해제합니다.
3. 모든 dll 파일을 C:\xampp\php 로 복사합니다.
4. 모든 dll 파일을 c:\xampp\apache\bin 으로 복사합니다.
5. php.ini 파일에서 “extension=php_oci8_12c.dll” 라인의 주석을 제거합니다.
6. Apache를 재시작합니다.
7. phpinfo() 를 실행하였을때 아래 그림과 같이 oci8 모듈이 로드되었음을 확인할 수 있습니다.
8. Oracle Express 설치합니다(시간이 많이 걸림).
9. Oracle 설치가 잘 되었는지 확인하기 위해서 아래와 같이 system 계정으로 로그인합니다.
C:\Users\Student>sqlplus
SQL*Plus: Release 21.0.0.0.0 – Production on 수 11월 1 16:36:42 2023
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
사용자명 입력: system
비밀번호 입력:
마지막 성공한 로그인 시간: 수 11월 01 2023 16:33:05 +09:00
다음에 접속됨:
Oracle Database 21c Express Edition Release 21.0.0.0.0 – Production
Version 21.3.0.0.0
SQL>
SQL> select user from dual;
USER
——————————————————————————–
SYSTEM
SQL>
10. 사용자 생성하기
SQL> create user c##stzuser identified by password
2 default tablespace users quota unlimited on users;
사용자가 생성되었습니다.
SQL> grant connect, resource to c##stzuser;
권한이 부여되었습니다.
SQL> select username from all_users;
USERNAME
——————————————————————————–
SYS
AUDSYS
SYSTEM
SYSBACKUP
SYSDG
SYSKM
SYSRAC
OUTLN
GSMADMIN_INTERNAL
GSMUSER
GSMROOTUSER
USERNAME
——————————————————————————–
DIP
XS$NULL
REMOTE_SCHEDULER_AGENT
DBSFWUSER
ORACLE_OCM
SYS$UMF
DGPDB_INT
DBSNMP
GSMCATUSER
APPQOSSYS
GGSYS
USERNAME
——————————————————————————–
XDB
ANONYMOUS
WMSYS
OJVMSYS
CTXSYS
ORDSYS
ORDDATA
ORDPLUGINS
SI_INFORMTN_SCHEMA
DVSYS
OLAPSYS
USERNAME
——————————————————————————–
MDSYS
MDDATA
LBACSYS
DVF
C##STZUSER
38 행이 선택되었습니다.
SQL> exit
Oracle Database 21c Express Edition Release 21.0.0.0.0 – Production
Version 21.3.0.0.0에서 분리되었습니다.
C:\Users\Student>sqlplus
SQL*Plus: Release 21.0.0.0.0 – Production on 수 11월 1 16:56:46 2023
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
사용자명 입력: c##stzuser
비밀번호 입력:
다음에 접속됨:
Oracle Database 21c Express Edition Release 21.0.0.0.0 – Production
Version 21.3.0.0.0
SQL> select user from dual;
USER
——————————————————————————–
C##STZUSER
SQL>
11. OCI와 PHP 연동 테스트하기
<?php
// Connects to the XE service (i.e. database) on the “localhost” machine
$conn = oci_connect(‘c##stzuser’, ‘password’, ‘localhost/XE’);
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e[‘message’], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, ‘SELECT user FROM dual’);
oci_execute($stid);
echo “<table border=’1′>\n”;
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo “<tr>\n”;
foreach ($row as $item) {
echo ” <td>” . ($item !== null ? htmlentities($item, ENT_QUOTES) : “ ”) . “</td>\n”;
}
echo “</tr>\n”;
}
echo “</table>\n”;
?>