无法加载dynamic库“oci8.so”(PHP 7.2)

自PHP 7.1更新到PHP 7.2以来,我无法安装oci8。 我有这个错误:

root @ 3ab6027c8d95:/ var / www#php -v

PHP警告:PHP启动:无法加载dynamic库'oci8.so'(尝试:/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so(libmql1.so:无法打开共享目标文件:没有这样的文件或目录),/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:无法打开共享对象文件:没有这样的文件或目录)

版权所有(c)1998-2017 Zend Technologies与Zend OPcache版权所有(c)1998-2017(C)1998年12月版本(c)1999-2017,由Zend Technologies

我使用的是Docker环境,我为此创build了一个github仓库,如果我使用PHP的版本7.1 ( shenron / docker-php-fpm:7.2 ),它就可以工作。

我不明白为什么脚本尝试启动这个文件: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so

以我的观点来看,有两种可能性。 或者驱动程序不兼容,或者pecl今天不能安装oci8。

有没有人有同样的问题?

感谢您的帮助。

/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.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)

oci8.so本身依赖于多个共享库,您可以使用ldd来找出哪些:

 ldd /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so linux-vdso.so.1 (0x00007ffc8bfe7000) libclntsh.so.12.1 => /usr/local/instantclient/libclntsh.so.12.1 (0x00007fb9919e0000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb991641000) libmql1.so => not found libipc1.so => not found libnnz12.so => not found libons.so => not found libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb99143d000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb991139000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb990f1c000) libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fb990d04000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb990afc000) /lib64/ld-linux-x86-64.so.2 (0x00007fb994bc8000) libaio.so.1 => /lib/x86_64-linux-gnu/libaio.so.1 (0x00007fb9908fa000) libclntshcore.so.12.1 => not found 

这些.so文件似乎是您的存储库中的zip文件的一部分。 像这样运行PHP LD_LIBRARY_PATH=/usr/local/instantclient_12_1/ php在您的容器内工作正常。 您需要将这些文件移动到理智的位置。