Necessity is the mother of Invention ( * googling ).
I get to know this how to install oci8 from various blogs and forums, hence consolidated all the points from different blogs and forums, so that you don't have to look for it.
Oracle extension has a
dependency of Oracle Client Packages.
Download the oracle
client packages from Oracle Offcl website
I have downloaded the
below mentioned packages
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-basiclite-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
Ignore the package
conflicts between old and new, hence use U with rpm
# rpm -Uvh
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
# rpm -Uvh
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
Same way, install the
remaining packages too.
Once done, confirm the
ORACLE_HOME as it will be required for oci8 installation
# echo $ORACLE_HOME
If it shows the old
versions path as 10.1 or 9.01 path or any other, atleast for the installation
we have to set the path temporarily to new location where Oracle client package
exists
Set environment
variable temporarily for Oracle clinet 12 version
# export
ORACLE_HOME="/usr/lib/oracle/12.1/client64/"
Verify using command
# echo $ORACLE_HOME
It must show /usr/lib/oracle/12.1/client64/
-* It
might be even required to set the set the LD_LIBRARY_PATH
# export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
*** Remember it is
temporary environment variable not permanent, once user exits from the terminal
it will show the permanent path
You can set the
permanent path in bash environment files.
Installation of oci8
package from PECL.
Now Download the oci8
packages from Pecl official website
Remember, you must
download the linux package with an extension of tgz else pecl will not
recognize the package provided to it for installation.
Run the last command
to install and enable oci8 extension.
# pecl install oci8-2.0.5.tgz
If the installation completed successfully, locate your php.ini and add the following line.
extension=oci8.so
#locate php.ini
In my case, i found it within /usr/local/lib/php.ini, run the below command to add the above line
# echo "extension=oci8.so" >> php.ini
That’s it !!! Enough
But for me, it was not
even enough for the installation I got some additional errors as
checking Oracle ORACLE_HOME install directory...
/usr/lib/oracle/12.1/client64/lib/
checking ORACLE_HOME library validity... configure: error: Expected an
ORACLE_HOME top level directory but /usr/lib/oracle/12.1/client64/lib/ appears
to be an Instant Client directory. Try
--with-oci8=instantclient,/usr/lib/oracle/12.1/client64/lib/
ERROR: `/var/tmp/oci8/configure --with-oci8=/usr/lib/oracle/12.1/client64/lib/'
failed
Here is the fix for
it, again a temporary path for PECL
# echo
"instantclient,/usr/lib/oracle/12.1/client64/lib" | pecl install
oci8-2.0.5.tgz
Here I just passed ,
what it is asking for :)
Confirm the same,
using phpinfo.php page you must get a category of oci8 extension like the below
mentioned screenshot.