본 문서는 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) : "&nbsp;")."</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";

?>


4. 에러 확인

위 코드 수정후 정상 작동이 안 될 경우 php.ini의 옵션 값중 display_errors = Off를 On으로 변경해 주면 에러값이 출력된다.


Posted by 카프러브