Yesterday :
Total :
JunToday.com
Rocky Linux 8.5에 oracle instant client 설치, php7 + oci8 연동 본문
Rocky Linux 8.5에 oracle instant client 설치, php7 + oci8 연동
JunToday 2022. 8. 19. 11:04[root@localhost ~]# dnf -y install httpd php php-devel wget make libnsl
설치 완료되면
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# systemctl enable php-fpm
서비스 enable 시켜주고
[root@localhost ~]# cd /usr/local/src
[root@localhost src]# wget https://download.oracle.com/otn_software/linux/instantclient/217000/oracle-instantclient-basic-21.7.0.0.0-1.el8.x86_64.rpm
[root@localhost src]# wget https://download.oracle.com/otn_software/linux/instantclient/217000/oracle-instantclient-sqlplus-21.7.0.0.0-1.el8.x86_64.rpm
[root@localhost src]# wget https://download.oracle.com/otn_software/linux/instantclient/217000/oracle-instantclient-devel-21.7.0.0.0-1.el8.x86_64.rpm
[root@localhost src]# wget http://pecl.php.net/get/oci8-2.2.0.tgz
wget으로 설치파일 다운로드 (사이트에서 직접 다운로드 받아서 sftp나 ftp로 올려도 됨.)
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
Instant Client for Linux x86-64 (64-bit)
Instant Client Installation for Linux x86-64 (64-bit) For general Instant Client information, see the Home Page. ODBC users should follow the ODBC Installation Instructions. The "Database Client Installation Guide for Linux" chapter on Installing Oracle In
www.oracle.com
http://pecl.php.net/package/oci8
PECL :: Package :: oci8
Description The OCI8 extension lets you access Oracle Database. Use 'pecl install oci8' to install for PHP 8.1. Use 'pecl install oci8-3.0.1' to install for PHP 8.0. Use 'pecl install oci8-2.2.0' to install for PHP 7. Use 'pecl install oci8-2.0.12' to inst
pecl.php.net
[root@localhost src]# dnf -y install oracle-instantclient-basic-21.7.0.0.0-1.el8.x86_64.rpm
[root@localhost src]# dnf -y install oracle-instantclient-sqlplus-21.7.0.0.0-1.el8.x86_64.rpm
[root@localhost src]# dnf -y install oracle-instantclient-devel-21.7.0.0.0-1.el8.x86_64.rpm
oracle-instantclient 설치 (제대로 설치되는지 보려고 하나씩 설치함..)
[root@localhost src]# vi /etc/profile.d/oracle.sh
export ORACLE_HOME=/usr/lib/oracle/21/client64/
export TNS_ADMIN=/usr/lib/oracle/21/client64/bin/
환경변수에 oracle.sh 파일 생성하여 내용 추가.
[root@localhost src]# vi /root/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin <<<<======수정 PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export PATH
수정.
[root@localhost src]# sqlplus
SQL*Plus: Release 21.7.0.0.0 Production on Thu Aug 18 21:31:04 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Enter user-name:
sqlplus 작동 확인.
여기까지 oracle isntantclient 설치 완료.
다음은 php에 oci8연동
[root@localhost src]# php -r "oci_connect();"
PHP Fatal error: Uncaught Error: Call to undefined function oci_connect() in Command line code:1
Stack trace:
#0 {main}
thrown in Command line code on line 1
요렇게 나오면 연동 안된 상태임.
[root@localhost src]# tar xzvf oci8-2.2.0.tgz
위에서 받은 oci8-2.2.0.tgz 파일 압축 해제(php7버전은 2.2.0버전이라고 함.)
[root@localhost src]# cd oci8-2.2.0
[root@localhost oci8-2.2.0]# phpize
Configuring for:
PHP Api Version: 20170718
Zend Module Api No: 20170718
Zend Extension Api No: 320170718
phpize로 확장모듈 컴파일..
[root@localhost oci8-2.2.0]# ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/21/client64/lib/
콘피그
[root@localhost oci8-2.2.0]# ln -s /usr/include/oracle/21/client64/ /usr/lib/oracle/21/client64/lib/include
인클루드 링크 걸어줌..
[root@localhost oci8-2.2.0]# make all install
......
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/src/oci8-2.2.0/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
- use the '-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to '/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/lib64/php/modules/
make all install로 설치.. 에러 안나는지 확인할 것!
[root@localhost oci8-2.2.0]# ll /usr/lib64/php/modules/oci8.so
-rwxr-xr-x 1 root root 897856 8월 18 13:16 /usr/lib64/php/modules/oci8.so
확인!
[root@localhost oci8-2.2.0]# echo 'extension=oci8.so' > /etc/php.d/oci8.ini
php.ini에 extension=oci8.so이 없으면 oci8.ini 파일 생성
[root@localhost oci8-2.2.0]# php -r "oci_connect();"
PHP Warning: oci_connect() expects at least 2 parameters, 0 given in Command line code on line 1
이렇게 나오면 연동 성공
오라클 클라이언트 버전이 높을 경우 구버전 오라클에 접속되지 않음...
오라클클라이언트 버전 21.7.0.0.0을 설치했더니 오라클10g에 접속이 안됨..
11.2.0.4버전으로 다시 설치..
[root@localhost ~]# cd /usr/lib/oracle/21/client64/lib/
[root@localhost lib]# rm -rf include
include 링크 삭제..
[root@localhost lib]# dnf remove oracle-instantclient-basic-21.7.0.0.0-1.el8.x86_64
설치한 오라클 클라이언트 21.7.0.0.0버전 삭제(이거 삭제하면 나머지도 삭제됨.)
[root@localhost lib]# cd /usr/lib64/php/modules/
[root@localhost modules]# rm -rf oci8.so
php모듈 디렉토리에 생성된 oci8.so 파일 삭제..
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
오라클 다운로드 페이지에서 다운로드 받은 위 세 파일을 sftp나 ftp로 /usr/local/src에 업로드 (wget으로 받았더니 설치가 안되더라..)
[root@localhost src]# dnf -y install oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
[root@localhost src]# dnf -y install oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
[root@localhost src]# dnf -y install oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
11.2설치.
[root@localhost src]# vi /etc/profile.d//oracle.sh
export ORACLE_HOME=/usr/lib/oracle/21/client64/
export TNS_ADMIN=/usr/lib/oracle/21/client64/bin/
이렇게 되어 있던걸
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
export TNS_ADMIN=/usr/lib/oracle/11.2/client64/bin/
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib/
이렇게 수정.. LD_LIBRARY_PATH 부분 안하면 sqlplus 실행할 때 모듈 없다고 에러나더라..
[root@localhost src]# sqlplus
SQL*Plus: Release 11.2.0.4.0 Production on Thu Aug 18 21:58:31 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Enter user-name:
sqlplus 잘 작동함.
[root@localhost src]# rm -rf oci8-2.2.0
재컴파일 해야 하니까 깔끔하게 압축 풀어놨던 oci8-2.2.0 삭제
[root@localhost src]# tar xzvf oci8-2.2.0.tgz
다시 압축 해제.
[root@localhost src]# cd oci8-2.2.0
[root@localhost oci8-2.2.0]# phpize
동일하게 진행.
[root@localhost oci8-2.2.0]# ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib/
[root@localhost oci8-2.2.0]# ln -s /usr/include/oracle/11.2/client64/ /usr/lib/oracle/11.2/client64/lib/include
[root@localhost oci8-2.2.0]# make all install
[root@localhost oci8-2.2.0]# ll /usr/lib64/php/modules/oci8.so
경로만 바꿔서 동일하게 진행.
[root@localhost oci8-2.2.0]# php -r "oci_connect();"
PHP Warning: oci_connect() expects at least 2 parameters, 0 given in Command line code on line 1
끝.
'생활속의 IT 노하우 > 리눅스' 카테고리의 다른 글
Rocky Linux 이전 버전 다운로드 링크 (0) | 2024.05.28 |
---|---|
Rocky Linux 8.5 커널 컴파일 (0) | 2022.08.29 |
CentOS6 mysql 데이터경로(datadir) 변경 (0) | 2022.02.28 |
리눅스 net-snmp에서 snmp v3 설정 (0) | 2022.02.09 |
mysql 전체 백업 -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly. (0) | 2021.04.14 |