Install Oracle Instant Client (oci8) for PHP5.6,7.4,8.3 on Ubuntu 22.04

1. Install Basic and the SDK Instant Client packages. Download from OTN

For PHP5.6. Download version 12.1.0.2.0. This file is required:
- instantclient-basic-linux.x64-12.1.0.2.0.zip
- instantclient-sdk-linux.x64-12.1.0.2.0.zip

For PHP7.4. Download version 19.29.0.0.0. This file is required:
- instantclient-basic-linux.x64-19.29.0.0.0dbru.zip
- instantclient-sdk-linux.x64-19.29.0.0.0dbru.zip

For PHP8.3. Download version 21.20.0.0.0. This file is required:
- instantclient-basic-linux.x64-21.20.0.0.0dbru.zip
- instantclient-sdk-linux.x64-21.20.0.0.0dbru.zip

2. Install OCI8. Download from pecl.php.net
#sudo pecl install oci8-2.0.10 (php5.6)
#sudo pecl install oci8-2.2.0  (php 7.) 
#sudo pecl install oci8 (php 8.)

3. Create new folders for Oracle Instant Client on server
#sudo mkdir /usr/lib/oracle
#sudo mkdir /usr/lib/oracle/21.20
#sudo mkdir /usr/lib/oracle/21.20/client64

Extract
 
#sudo cp instantclient-basic-linux.x64-21.1.0.0.0.zip /usr/lib/oracle/21.1/client64
#sudo cp instantclient-sdk-linux.x64-21.1.0.0.0.zip /usr/lib/oracle/21.1/client64

#cd /usr/lib/oracle/21.1/client64

#sudo unzip instantclient-basic-linux.x64-21.1.0.0.0.zip
#sudo unzip instantclient-sdk-linux.x64-21.1.0.0.0.zip

#sudo mv instantclient_21_1 lib

4.Create symbolic link to the new Instant Client files:
#cd /usr/lib/oracle/21.1/client64/lib/    
#sudo ln -s libclntsh.so.21.1 libclntsh.so (It may already exist, continue)
#sudo ln -s libocci.so.21.1 libocci.so (It may already exist, continue)

Edit/Create this file with the path to the lib (for LDCONFIG):

#sudo vi /etc/ld.so.conf.d/oracle.conf

Add this to the file and save:
/usr/lib/oracle/21.1/client64/lib

Update Dynamic Linker

#ldconfig

Install php-dev php-pear build-essential and libaio1
#sudo apt-get install php-dev php-pear build-essential libaio1

5.Update PECL to install OCI8 from it
#sudo pecl channel-update pecl.php.net

Install OCI8 from PCEL (desired version, default seems not to find it for me, i used php7.)
#sudo pecl install oci8 (php 8)
#sudo pecl install oci8-2.2.0  (php 7.)

During install it will require the path to Instant Client, write this:

instantclient,/usr/lib/oracle/21.1/client64/lib 

6. Load OCI8 into PHP
Add to mods-available
#cd /etc/php/7.4/mods-available/
#sudo vi oci8.ini

Add this to the file:
extension = oci8.so 

7.Create sym link to the created ini file
#cd /etc/php/7.4/cli/conf.d 
#sudo ln -s /etc/php/7.4/mods-available/oci8.ini 20-oci8.ini 

8. Validate that it was successfully installed.

#php -i | grep oci8  

oci8
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 2

 9. Manual install OCI8 

#tar -xzf oci8-2.0.10.tgz
#cd oci8-2.0.10
#phpize
#./configure -with-oci8=share,instantclient,/usr/lib/oracle/12.1/client64/lib
#make install

To select default php version
#sudo update-alternatives --config php

If several PHP installs you should change all three php phpize and php-conf to the wanted version:
 
#sudo update-alternatives --set phpize /usr/bin/phpize7.4
#sudo update-alternatives --set php /usr/bin/php7.4
#sudo update-alternatives --set php-config /usr/bin/php-config7.4 

 

source : https://gist.github.com/eSkiSo/781269c79b4dd740e90fcc059c1985ae 

Post a Comment

Previous Post Next Post