본 문서는 Apache + PHP + Oracle Client를 설치 문서이다.
작성일 : 2011. 9. 7
참고 사이트
- Installing PHP and the Oracle Instant Client : http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html
- Apache 2.X + PHP 5.X 설치 : http://www.dakrink.pe.kr/archives/341
- php.ini 관련 설정 : http://www.solanara.net/solanara/amp
설치 환경 및 모듈 버전
- OS : Redhat Enterprise 5.2
- Httpd : Apache 2.2.20 (http://httpd.apache.org)
- PHP : php 5.3.8 (http://www.php.net)
- Oracle Instant Client : 11.2.0.2.0 (http://www.oracle.com/technetwork/database/features/oci/index.html)
- OCI8 : 1.4.6 (http://pecl.php.net/package/oci8)
설치 위치
- Apache : /usr/local/httpd-2.2.20
- PHP : /usr/local/php-5.3.8
소스 위치
- /usr/local/src
Step 1. Installing Apache with PHP
1. Compile & Install Apache
# cd /usr/local/src/httpd-2.2.20
# ./configure --prefix=/usr/local/httpd-2.2.20 --enable-module=so --enable-mods-shared=most
# make ; make install
2. Edit httpd.conf ( 아래 라인 추가 )
AddType application/x-httpd-php .php .htm .html .inc .php5 .php4
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.php index.htm
3. Compile & Install PHP
# cd /usr/local/src/php-5.3.8
# ./configure --prefix=/usr/local/php-5.3.8 \
--with-apxs2=/usr/local/httpd-2.2.20/bin/apxs \
--with-config-file-path=/usr/local/httpd-2.2.20/conf \
--with-exec-dir=/usr/local/httpd-2.2.20/bin --with-gd
# make ; make install
4. Check Web Server Working
Step 2. Install Oracle Instant Client
1. Download Oracle Instant Client
1) Download URL : http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
2) Download Package
- Instant Client Package - Basic
- Instant Client Package - SDK
2. Installing by RPM (32BIT)
1) 32bit
# rpm -Uvh oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm
# rpm -Uvh oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm
2) 64bit
# rpm -Uvh oracle-instantclient11.2-basic-11.2.0.2.0.x86_64.rpm
# rpm -Uvh oracle-instantclient11.2-devel-11.2.0.2.0.x86_64.rpm
위 RPM은 /usr/lib/oracle/11.2/client 또는 /usr/lib/oracle/11.2/client64에 설치된다.
Step 3. Installing OCI8
1. OCI 8 설치
# /usr/local/php-5.3.8/bin/pecl install oci8
그럼 아래와 같은 질문이 출력된다.
Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :
그러면 아래와 같은 옵션을 입력한다.
instantclient,/usr/lib/oracle/11.2/client/lib
2. 모듈 복사
OCI8이 설치되면 /usr/local/php-5.3.8/lib/php/extensions/no-debug-non-zts-20090626 아래 oci8.so가 생성된다. 이 외에 Extension Modules이 있을 수 있으니 상위 디렉토리(/usr/local/php-5.3.8/lib/php/extensions) 로 복사해 넣는다.
3. 모듈 설정
1) php.ini 복사
소스 컴파일 경우 php.ini가 생성되지 않는다. 이를 위해 상용 서비스용 샘플 Config 파일을 복사한다.
PHP 컴파일시 준 옵션 (--with-config-file-path=/usr/local/httpd-2.2.20/conf)에 의해 httpd 설정 디렉토리에 복사해 넣는다.
# cp /usr/local/src/php-5.3.8/php.ini-production /usr/local/httpd-2.2.20/conf
2) php.ini 수정 ( 아래 라인을 찾아 수정한다)
date.timezone = Asia/Seoul
short_open_tag = On
include_path = ".:/usr/local/php-5.3.8/lib"
extension_dir = "/usr/local/php-5.3.8/lib/php/extensions/"
expose_php = Off
3) php.ini 에 추가 ( Dynamic Extensions 섹션에 추가 )
extension=oci8.so
4) 환경 변수 수정
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH;/usr/lib/oracle/11.2/client/lib
Finally, Start Apache Server & Testing
1. 아파치 문서 디렉토리에 테스트 페이지 생성
# vi test.php
<?
phpinfo ();
?>
2. 웹 브라우져에서 확인
3. 테스트용 소스 코드 작성
# vi testoci.php
<?php
$conn = oci_connect('hr', 'hr_password', 'mymachine.mydomain/MYDB');
$stid = oci_parse($conn, 'select table_name from user_tables');
oci_execute($stid);
echo "<table>\n";
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : " ")."</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
4. 에러 확인
위 코드 수정후 정상 작동이 안 될 경우 php.ini의 옵션 값중 display_errors = Off를 On으로 변경해 주면 에러값이 출력된다.