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
http://pecl.php.net/package/oci8
[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 |