It is important to follow this sequence because the SDK package will unzip into the directory created by the basic package. If you're using a fresh Linux instance you may need to install the unzip package.

Next you'll add the instant client directory to ldconfig:

$ touch /etc/ld.so.conf.d/oracle-instantclient

Open this newly created file and add the following line:

/opt/oracle/instantclient_18_3

Next you'll need to install a few PHP and system packages. Use your package manager to do so, on Debian/Ubuntu you'd use apt install for instance:

$ apt install php-dev php-pear build-essential libaio1

If you're running an earlier version of PHP (for example 7.1) then you will need to modify the PHP package names to look like php7.1-dev, php7.1-pear, etc.

IMPORTANT: Note you are prompted to provide the path to the ORACLE_HOME directory. The required format is rather odd, and it must be followed precisely. You must specify the string instantclient followed by a comma, followed by the path to the instantclient directory. For example:

instantclient,/opt/oracle/instantclient_18_3

Finally, you'll just need to add the extension reference to your php.ini file. You likely have *two* php.ini files on your server, one for the CLI and one for the web server. You can learn more about their locations by running:

$ php --ini

Note however this will only identify the CLI php.ini file path because we're running PHP via the CLI. However the php.ini file used in conjunction with the web server is also typically found in this path. For instance on Debian 8 the respective paths are:

/etc/php/7.2/apache2/php.ini/etc/php/7.2/cli/php.ini

Open each file and append the following line to the bottom of each:

extension = oci8.so

After saving the files, run the following command to confirm the PHP CLI sees the OCI8 extension:

$ php -m | grep oci
oci8

Finally, add the following two variables to your system environment and to Apache envvars file:

Remember you'll need to restart your web server to ensure any changes to the web-related php.ini file take effect. Once complete, you should be able to generate an Oracle API via your DreamFactory web administration console.

For testing purposes you might additionally consider downloading the SQL Plus client (instantclient-sqlplus-linux.x64-18.3.0.0.0dbru.zip) to ensure your DreamFactory server can connect to the Oracle database. You'll download this zip file from the aforementioned Oracle website. Be sure to move the file to /opt/oracle, and then unzip it into /opt/oracle/instantclient_18_3. After unzipping it, make sure the following environment variables are set:

Don't Need Oracle?

DreamFactory's Silver and Gold licenses include the Oracle connector by default, however if you don't require Oracle support and therefore don't install the OCI8 extension then you'll encounter the following error:

Scroll further down composer.json, and remove the line beginning with dreamfactory/df-oracledb":

When removing these lines, be sure to remove the concluding comma, and leave the preceding comma intact.

Save your changes, and run the following command from your project's root directory:

$ composer update dreamfactory/df-oracledb --ignore-platform-reqs

If you instead run composer install --ignore-platform-reqs after making this change, you'll see the following warning:

Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated
dependencies. Run update to update them.

This isn't a particularly big deal, however in the interests of ensuring your composer.json and composer.lock files are synchronized, run the aforementioned composer update command after the composer install command completes, at which point you are done.