OCI_Connect() – Fixing ORA-28547 Error

apache-2.4oraclepeclphp-fpm

I have this connection string on an older server which works fine and connects to a remote oracle server.

On this new server I installed oracle instant client simple and devel and php pecl oci8. Below is the screenshot of the oci8.

Here is the code I use to connect

$db = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" . $ORACLE_HOST . ")(PORT=" . $ORACLE_PORT . ")))(CONNECT_DATA=(SID=" . $ORACLE_DB . ")))";
$this->dbh = oci_connect($ORACLE_USER, $ORACLE_PASS, $db);

But when I try to connect to oracle I get this error

oci_connect(): Error while trying to retrieve text for error ORA-28547

If I type a random hostname I get ORA-12154 error which makes sense
If I type a random SID I get ORA-12514 error which makes sense
If I type a random port I get ORA-12545 error which makes sense
If I nc the server and port I get this result

Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.10.40.21:1521.
Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.

System I use is Centos 7 64bit, php 5.6

Anyone has any idea why this might happen?

enter image description here

Best Answer

It seems even though phpinfo can detect oracle client version 18.5 but it fails to get ORACLE_HOME directory

If you only set

SetEnv ORACLE_HOME "/usr/lib/oracle/18.5/client64/lib"

in client's virtual host config file

/etc/httpd/conf/sites-available/client.vhost

This adds ORACLE_HOME to PHP Variables only which has NO EFFECT fixing the problem

Instead

You need to add

env[ORACLE_HOME] = /usr/lib/oracle/18.5/client64/lib

in client's php-fpm config file

/etc/php-fpm.d/client.conf

This adds ORACLE_HOME under both PHP Variables and Environment which fixes the problem.

enter image description here