Source: How to install OCI8 on Ubuntu 16.04 and PHP 7.1 Download the Oracle Instant Client and SDK from Oracle website. [Need to login in Oracle page] //www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html Files: Create a new folder to store Oracle Instant Client zip files on your server. Upload the Instant Clients files inside this folder. Now we need to extract the files.Install Oracle Instant Client and SDK
Step 1
instantclient-basic-linux.x64-18.3.0.0.0dbru.zip
and instantclient-sdk-linux.x64-18.3.0.0.0dbru.zip
.Step 2
Step 3
unzip instantclient-basic-linux.x64-18.3.0.0.0dbru.zip -d /opt/oracle
unzip instantclient-sdk-linux.x64-18.3.0.0.0dbru.zip -d /opt/oracle
Step 4
Add the folder to our ldconfig
.
echo /opt/oracle/instantclient_18_3 > /etc/ld.so.conf.d/oracle-instantclient
Step 6
Update the Dynamic Linker Run-Time Bindings
Done. Now we can proceed to the next part.
Install Additional Packages
To install the OCI8 extension, we need to install some additional package on our server.
Step 1
Run these command:
apt install php-dev php-pear build-essential libaio1
Step 2
Once installed, we need to get the OCI8 file.
When you are prompted for the Instant Client location, enter the following:
instantclient,/opt/oracle/instantclient_18_3
Step 3
We need to tell PHP to load the OCI8 extension.
echo "extension = oci8.so" >> /etc/php/7.2/fpm/php.ini echo "extension = oci8.so" >> /etc/php/7.2/cli/php.ini
Step 4
Add the following lines to /etc/apache2/envvars
export LD_LIBRARY_PATH=/opt/oracle/instantclient_18_3 export ORACLE_HOME=/opt/oracle/instantclient_18_3
Step 5
Check if the extension is enabled.
If returns oci8
, its works!
Step 6
Restart the PHP-FPM
service php7.2-fpm restart
Now you can connect to Oracle DBMS from your PHP applications.
//www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html Download files: Basic Package
[ZIP]: instantclient-basic-linux.x64-21.1.0.0.0.zip SDK Package [ZIP]: instantclient-sdk-linux.x64-21.1.0.0.0.zip Create new folders for Oracle Instant Client on serverStep 1
Download Oracle Instant Client and SDK from Oracle:
Step 2
sudo mkdir /usr/lib/oracle
sudo mkdir /usr/lib/oracle/21.1
sudo mkdir /usr/lib/oracle/21.1/client64
Step 3
Extract files
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
Step 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]
Step 5
Edit/Create this file with the path to the lib [for LDCONFIG]:
sudo echo /usr/lib/oracle/21.1/client64/lib > /etc/ld.so.conf.d/oracle.conf
Step 6
Update Dynamic Linker
Step 7
Install php-dev php-pear build-essential and libaio1
sudo apt-get install php-dev php-pear build-essential libaio1
Step 8
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
At the end something like this should appear:
Build process completed successfully Installing '/usr/lib/php/20190902/oci8.so' install ok: channel://pecl.php.net/oci8-2.2.0 configuration option "php_ini" is not set to php.ini location You should add "extension=oci8.so" to php.ini
Step 9
Load OCI8 into PHP
sudo echo "extension=oci8.so" >> /etc/php/7.4/cli/php.ini
Restart Apache
sudo systemctl restart apache2
Step 10
Add to mods-available
cd /etc/php/7.4/mods-available/ sudo nano oci.ini
Add this to the file:
Step 11
Create sym link to the created ini file
cd /etc/php/7.4/apache2/conf.d sudo ln -s /etc/php/7.4/mods-available/oci.ini 20-oci.ini
Restart Apache
sudo systemctl restart apache2
Step 12 [Testing]
Check if OCI is loaded in PHP
Should output something like this:
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 => 20
Credits
Based on a post from Carlos Juan
//www.cjorellana.net/2020/12/como-instalar-oci8-en-ubuntu-2004-y-php.html