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)
#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