Since the update of PHP 7.1 to PHP 7.2 I can't install oci8. I have this error:
root@3ab6027c8d95:/var/www# php -v
PHP Warning: PHP Startup: Unable to load dynamic library 'oci8.so' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so (libmql1.so: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 7.2.0 (cli) (built: Dec 12 2017 05:52:58) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.2.0, Copyright (c) 1999-2017, by Zend Technologies
I'm using Docker environment, I created a github repo for this, it works if I use the version 7.1 of PHP (shenron/docker-php-fpm:7.2).
I don't understand why the script try to launch this file: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so
.
To my point of view there are two possibilities; or the driver is not compatible, or pecl can't today install oci8.
Has anyone the same problem ?
Thank you for your help.
/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so
is only the second guess on the shared library file name. You can safely ignore that.The actual problem is:
(tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so (libmql1.so: cannot open shared object file: No such file or directory)
oci8.so
itself depends on multiple shared libraries, you can useldd
to find out which ones:Those
.so
files seem to be part of a zip file in your repository. Running PHP like thisLD_LIBRARY_PATH=/usr/local/instantclient_12_1/ php
works fine inside your container. You need to move those so files to a sane location.For anyone stumbling upon this question, here is the proper way to handle it in linux. (I am using CentOS commands for the demo below but Ubnutu shouldn't be any different)
step 1: get oracle libs
EDIT: Thanks to Christopher Jones for the comment, you can find the direct rpm links at https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/
step 2: install
step 3: configure (make the path of the oracle libs to be discoverable)
test