Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save viniciusmelocodes/4a62046197e85417da018b80cd09e7a8 to your computer and use it in GitHub Desktop.
Save viniciusmelocodes/4a62046197e85417da018b80cd09e7a8 to your computer and use it in GitHub Desktop.
Install OCI8 (Oracle) in Ubuntu 20.04 with PHP 7.4 (Oracle 11G)

Install OCI8 on Ubuntu 20.04 with PHP 7.4 (Oracle 11G)

Step 1

Download Oracle Instant Client and SDK from Oracle:

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

Download files:

Basic Package (ZIP): instantclient-basic-linux.x64-11.2.0.4.0.zip

SDK Package (ZIP): instantclient-sdk-linux.x64-11.2.0.4.0.zip

Step 2

Create new folders for Oracle Instant Client on server

    sudo mkdir /usr/lib/oracle
    sudo mkdir /usr/lib/oracle/11.2
    sudo mkdir /usr/lib/oracle/11.2/client64

Step 3

Extract files

    sudo cp instantclient-basic-linux.x64-11.2.0.4.0.zip /usr/lib/oracle/11.2/client64
    sudo cp instantclient-sdk-linux.x64-11.2.0.4.0.zip /usr/lib/oracle/11.2/client64

    cd /usr/lib/oracle/11.2/client64

    sudo unzip instantclient-basic-linux.x64-11.2.0.4.0.zip
    sudo unzip instantclient-sdk-linux.x64-11.2.0.4.0.zip

    sudo mv instantclient_11_2 lib

Step 4

Create symbolic link to the new Instant Client files:

    cd /usr/lib/oracle/11.2/client64/lib/    
    sudo ln -s libclntsh.so.11.1 libclntsh.so (It may already exist, continue)
    sudo ln -s libocci.so.11.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/11.2/client64/lib > /etc/ld.so.conf.d/oracle.conf

Step 6

Update Dynamic Linker

	sudo ldconfig

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/11.2/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.service

Step 10

Add to mods-available

	cd /etc/php/7.4/mods-available/
	sudo nano oci.ini

Add this to the file:

extension = oci8.so

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.service

Step 12 (Testing)

Check if OCI is loaded in PHP

	php -i | grep oci

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

https://www.cjorellana.net/2020/12/como-instalar-oci8-en-ubuntu-2004-y-php.html

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment