Server관련/Sever(OS)

우분투(Ubuntu 24.04)에 PHP7 + OCI8 + Oracle19c client 설치하기 (PHP5.6실패기 = php-config5.6 문제점)

saltdoll 2024. 5. 28. 04:01
반응형

우분투(Ubuntu 24.04 LTS 커널:Linux 6.8.0-1008-aws)에서 PHP와 Oracle19c 연결하기 위한 환경을 셋팅해 보았습니다.

Ubuntu 환경이 처음 하는 작업이라 시간이 좀 걸렸네요.

 

[ Ubuntu 우분투 이야기 ]
Ubuntu는 오래된 데비안(Debian) Linux를 기초로 만들어진 리눅스입니다.
과거 Google에서 우분투를 커스텀해서 구분투(Goobuntu)라고 사용한다고 이야기가 있을 때부터, 구글이 사용하는 리눅스라는 것에 신뢰를 갖으며, 사용자들 점점 늘어났던 Linux였답니다.
그러나, 얼마전 인터넷 뉴스를 통해서 알게 된 사실은, 우분트 장기 지원(LTS) 2년 릴리즈가 구글입장에서 큰 부담이 되어서, 데비안으로 전환중 이라고 하네요. 구글과 같은 대량의 서버를 가지고 있는 기업이라면 2년 릴리즈 사이클이 사용하기 쉽지 않은 조건 중에 하나일 수도 있을 것 같네요.
저 같은 경우는, 과거에 Red Hat기반의  Fedora와 CentOS를 많이 사용을 했었죠. 
그중에서도 기업들에게 무료이면서, Red Hot과 완전히 호환된던 CentOS는 오랜 시간동안 사랑을 받았죠. 오랜시간 무료로써 인기를 누리던 CentOS가 2020년 12월에 CentOS커뮤니티와 Red Hat에서 CentOS 서비스 종료를 발표하였습니다. CentOS 7의 경우 2024년 6월 30일이 종료 예정이 되었습니다.

 

 

현재, PHP + Oracle기반에서 사용되는 필요한 것들

1. Apache2

2. PHP 7.0.33

3. Oracle 19c Client 

4. OCI8 (라이브러리)

Ubuntu 24.04 + PHP7.0.33 + Oralce19c Client

 

Commnad Summary

Apache + PHP + Oracle Client 명령어 요약본

$sudo apt update
$sudo apt install apache2
$sudo add-apt-repository ppa:ondrej/php
$sudo apt-get update
$sudo apt-get install php7.0 php7.0-mbstring libapache2-mod-php7.0
$sudo service apache2 restart


$sudo apt-get install alien
$sudo alien -i oracle-instantclient19.23-basic-19.23.0.0.0-1.x86_64.rpm
$sudo alien -i oracle-instantclient19.23-devel-19.23.0.0.0-1.x86_64.rpm
$sudo alien -i oracle-instantclient19.23-sqlplus-19.23.0.0.0-1.x86_64.rpm
$sudo vi /etc/ld.so.conf.d/oracle.conf && sudo chmod o+r /etc/ld.so.conf.d/oracle.conf
/* oracle.conf 파일 내용 */
/usr/lib/oracle/19.23/client64/lib/

$sudo ldconfig
$sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1


$sudo apt-get install php7.0-dev php7.0-xml
$wget http://pecl.php.net/get/oci8-2.1.3.tgz
$tar xvzf oci8-2.1.3.tgz
$cd oci8-2.1.3/
$phpize
$sudo  ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/19.23/client64/lib --with-php-config=/usr/bin/php-config7.0
$sudo make all install
$sudo vi /etc/php/7.0/apache2/php.ini
/* php.ini 파일 가장 하위 내용 */
[oracle]
extension=oci8.so

 

 

1. 아파치(Apache) 웹서버 설치

apt는 Debian/Ubuntu의 Package managemntTool입니다.

apt 패키지를 업데이트합니다

참고: apt는 최신 Debian/Ubuntu의 버전, apt-get 과거버전이며, apt와 apt-get는 동일한 작업을 수행합니다.

 

아파치2 패키지를 설치해 줍니다.

$sudo apt update
$sudo apt install apache2

 

 

2. PHP 7 모듈 설치하기

add-apt-repository는 /etc/apt/sources.list 또는 /etc/apt/sources.list.d 디렉터리의 별도 파일에 APT저장소를 추가할 수 있는 Python스크립트입니다.

PPA저장소는 ppa:<user>/<ppa-name>의 형태를 가지고 있습니다.

 

PHP 7의 모듈들을 설치해 줍니다.

$sudo add-apt-repository ppa:ondrej/php
$sudo apt-get update
$sudo apt-get install php7.0 php7.0-mbstring libapache2-mod-php7.0
$sudo service apache2 restart

 

 

3. Oracle 19c 클라이언틀 rpm버전으로 설치

alien명령은 Red Hot의 rpm, Debian의 deb, Solaris pkg, tgz 등의 파일 형식을 변화하는 프로그램입니다.

(alien명령은 init, libc 또는 system 필수요소 패키지에 사용해서는 안됩니다)

 

오라클 19c의 client모듈들을 rpm버전으로 설치한다.

$sudo apt-get install alien
$sudo alien -i oracle-instantclient19.23-basic-19.23.0.0.0-1.x86_64.rpm
$sudo alien -i oracle-instantclient19.23-devel-19.23.0.0.0-1.x86_64.rpm
$sudo alien -i oracle-instantclient19.23-sqlplus-19.23.0.0.0-1.x86_64.rpm

 

 

3.1 sqlplus64 접속 테스트

$sqlplus64 {username}/{password}@//{dbhost}:1521/SID

다음과 같을 입력 하면 , 아래의 오류가 발생합니다.

sqlplus64: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory

 

아래 오류를 해결하기 위해서, 설정을 추가해 줍니다.

$sudo vi /etc/ld.so.conf.d/oracle.conf && sudo chmod o+r /etc/ld.so.conf.d/oracle.conf
### oracle.conf 파일 내용 ###
/usr/lib/oracle/19.23/client64/lib/
$ sudo ldconfig

 

 

oracle.conf의 파일 내용 내용
/usr/lib/oracle/19.23/client64/lib/

 

또 사시 sqlplus64를 접속해도,  아래와 같은 오류가 발생합니다.

sqlplus64: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

 

해당 오류를 해결하기 위해서, 다음과 같이 심볼릭 링크를 만들어 줍니다.

$sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1

 

다시금, sqlplus64로 접속하려고 하면 연결이 성공합니다.

$sudo sqlplus64 유저아이디/패스워드//아이피:1521/디비명

SQL*Plus: Release 19.0.0.0.0 - Production on Thu May 16 00:15:57 2024
Version 19.23.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

Last Successful login time: Thu May 16 2024 00:15:17 +00:00

Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.21.0.0.0

SQL>

 

 

4. PHP 7 설치 + OCI8 모듈설치

PHP 7 모듈 설치와 Oralce와 연동을 위한 OCI8 설치를 위해서 php7.0-xml과 php7.0-dev를 설치해 줍니다.

참고로 OCI8모듈 소스는 PHP버전에 따라 다르며, oci8.1.3는 PHP 7를 위한 마지막 버전입니다.

$sudo apt-get install php7.0-xml php7.0-dev
$wget http://pecl.php.net/get/oci8-2.1.3.tgz
$tar xvzf oci8-2.1.3.tgz
$cd oci8-2.1.3/
$phpize
$sudo  ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/19.23/client64/lib --with-php-config=/usr/bin/php-config7.0
$sudo make all install
$sudo vi /etc/php/7.0/apache2/php.ini
## php.ini 파일의 마지막에 OCI8연동 설정 ##
[oracle]
extension=oci8.so
#######################################

 

 

php.ini 가장 하위 내용
[oracle]
extension=oci8.so

 

phpinfo()의 OCI8 정보

 

 

[ PHP 5.6 설치 실패기 ]

왜 PHP 5.6 설치를 실해했는지?

PHP5.6 설치를 설치하고, php5.6-dev모듈을 설치하면,  /usr/bin/php5.6-config가 설치가 됩니다.

그러나, 해당 php5.6-config 명령을 실행하게 되면, 제대로 실행이 되지 않습니다.

$ /usr/bin/php5.6-config
/usr/bin/php-config: 98: Syntax error: Unterminated quoted string

 

결론) 포기하게 된 이유가 /usr/bin/php-config6.5가 제대로 실행이 안돼서입니다.

oci8.so를 만들게 되면, configure를 실행하면 --with-php-config=PATH가 찾을 수 없다는 오류가 나타납니다.

$sudo  ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/19.23/client64/lib --with-php-config=/usr/bin/php-config5.6
fig=/usr/bin/php-config5.6
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether cc accepts -g... yes
checking for cc option to enable C11 features... none needed
checking how to run the C preprocessor... cc -E
checking for icc... no
checking for suncc... no
checking for system library directory... lib
checking if compiler supports -Wl,-rpath,... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
configure: error: Cannot find php-config. Please use --with-php-config=PATH
$

 

결론은, Ubuntu 24.04에서는 PHP 5.6 설치는 불가능해서, 가장 가까운 버전의 PHP 7(7.0.23)을 설치하게 되었습니다.

 

 

 

[ 참조 내용 ]

[ 한글:  Ubuntu Server 16.04.1 LTS LAMP (Apache2, Mysql5.5, PHP5/7) 설치하기 ]

https://blog.kimsfactory.com/2

https://blog.kimsfactory.com/18

[ Ubunto 사용하게 된 계기 ]

CentOS 지원 종료 안내: https://cloud.google.com/compute/docs/eol/centos-eol-guidance?hl=ko

구글 g리눅스 Debit으로 변경: https://www.ciokorea.com/t/538/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/247906

 

반응형