Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PHP can't find shared library although it's right there

2,237 views
Skip to first unread message

Robert Latest

unread,
May 25, 2021, 10:55:55 AM5/25/21
to
Hello,

I'm trying to install the oracle DB extension on this RHEL7 system but I can't
get it to work. The server says on startup:

$ grep oci /var/log/httpd/error_log PHP Warning: PHP Startup: Unable to load
dynamic library 'oci8' (tried: /usr/lib64/php/modules/oci8
(/usr/lib64/php/modules/oci8: cannot open shared object file: No such file or
directory), /usr/lib64/php/modules/oci8.so (libclntsh.so.21.1: cannot open
shared object file: No such file or directory)) in Unknown on line 0

But the file is right there:

$ ls -l /usr/lib64/php/modules/oci8.so
-rwxr-xr-x. 1 root root 185832 May 4 14:13 /usr/lib64/php/modules/oci8.so

phpinfo.php lists the OCI8 modules with their authors. What am I missing?

--
robert

Robert Heller

unread,
May 25, 2021, 11:48:03 AM5/25/21
to
libclntsh.so.21.1 shared library file is missing. The OCI8 module needs the
libclntsh.so.21.1 shared library to also be installed. Yes the error message
is a little confusing.

>

--
Robert Heller -- Cell: 413-658-7953 GV: 978-633-5364
Deepwoods Software -- Custom Software Services
http://www.deepsoft.com/ -- Linux Administration Services
hel...@deepsoft.com -- Webhosting Services

John-Paul Stewart

unread,
May 25, 2021, 11:51:00 AM5/25/21
to
On 2021-05-25 10:55 a.m., Robert Latest wrote:
> Hello,
>
> I'm trying to install the oracle DB extension on this RHEL7 system but I can't
> get it to work. The server says on startup:
>
> $ grep oci /var/log/httpd/error_log PHP Warning: PHP Startup: Unable to load
> dynamic library 'oci8' (tried: /usr/lib64/php/modules/oci8
> (/usr/lib64/php/modules/oci8: cannot open shared object file: No such file or
> directory), /usr/lib64/php/modules/oci8.so (libclntsh.so.21.1: cannot open
> shared object file: No such file or directory)) in Unknown on line 0
>
> But the file is right there:
>
> $ ls -l /usr/lib64/php/modules/oci8.so
> -rwxr-xr-x. 1 root root 185832 May 4 14:13 /usr/lib64/php/modules/oci8.so

First off, I'm not familiar with the oci8 module itself, so the
following may not be entirely accurate:

The error message seems to be showing that it is trying to load
/usr/lib64/php/modules/oci8 and not finding it. Which is to be
expected. Then it tries /usr/lib64/php/modules/oci8.so which it does
find but cannot open because its dependency, libclntsh.so.21.1, is not
found. What does 'ldd /usr/lib64/php/modules/oci8.so' show?

Do you have libclntsh.so.21.1 installed somewhere on your system? If
not you'll need to install it. If it is installed, then you'll need to
set the library path to point to it, so that it can be found when needed.

Arno Welzel

unread,
May 25, 2021, 12:22:53 PM5/25/21
to
Robert Latest:

> Hello,
>
> I'm trying to install the oracle DB extension on this RHEL7 system but I can't
> get it to work. The server says on startup:
>
> $ grep oci /var/log/httpd/error_log PHP Warning: PHP Startup: Unable to load
> dynamic library 'oci8' (tried: /usr/lib64/php/modules/oci8
> (/usr/lib64/php/modules/oci8: cannot open shared object file: No such file or
> directory), /usr/lib64/php/modules/oci8.so (libclntsh.so.21.1: cannot open
> shared object file: No such file or directory)) in Unknown on line 0
>
> But the file is right there:
>
> $ ls -l /usr/lib64/php/modules/oci8.so
> -rwxr-xr-x. 1 root root 185832 May 4 14:13 /usr/lib64/php/modules/oci8.so

No - the missing library is "libclntsh.so.21.1" not oci8.so.

> phpinfo.php lists the OCI8 modules with their authors. What am I missing?

You miss libclntsh.so.21.1, not oci8.so.

Also see:
<https://docs.oracle.com/en/database/oracle/oracle-database/21/lacli/instant-client-shared-libraries.html>


--
Arno Welzel
https://arnowelzel.de

Robert Heller

unread,
May 25, 2021, 12:24:18 PM5/25/21
to
If it is installed in a "standard place", ldconfig will take care of it.

Robert Latest

unread,
May 25, 2021, 1:18:53 PM5/25/21
to
Arno Welzel wrote:
>
> No - the missing library is "libclntsh.so.21.1" not oci8.so.
>
>> phpinfo.php lists the OCI8 modules with their authors. What am I missing?
>
> You miss libclntsh.so.21.1, not oci8.so.

Thanks to you and all the other guys. Found and installed the appropriate rpm
from Oracle, fixed the conf file in /etc/ld.conf.d/, ran ldconfig, restarted
Apache, and voila.

--
robert

John-Paul Stewart

unread,
May 25, 2021, 1:41:03 PM5/25/21
to
On 2021-05-25 12:24 p.m., Robert Heller wrote:
> At Tue, 25 May 2021 11:50:51 -0400 John-Paul Stewart <jpst...@personalprojects.net> wrote:
>>
>> Do you have libclntsh.so.21.1 installed somewhere on your system? If
>> not you'll need to install it. If it is installed, then you'll need to
>> set the library path to point to it, so that it can be found when needed.
>
> If it is installed in a "standard place", ldconfig will take care of it.

The error showed that either it was not installed at all or it was not
in a "standard place".
0 new messages