从PHP 7.1更新到PHP 7.2,我无法安装oci8。我有这个错误:
root @ 3ab6027c8d95:/ var / www#php -v PHP警告:PHP启动:无法加载动态库’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:无法打开共享对象文件:无此类文件或目录)在第0行的“未知”中 PHP 7.2.0(cli)(内置:2017年12月12日05:52:58)(NTS)版权所有(c)1997-2017 The PHP Group Zend Engine v3.2.0,版权所有(c)1998-2017 Zend Technologies with Zend OPcache v7.2.0,版权所有(c)1999-2017,由Zend Technologies提供
root @ 3ab6027c8d95:/ var / www#php -v
PHP警告:PHP启动:无法加载动态库’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:无法打开共享对象文件:无此类文件或目录)在第0行的“未知”中
PHP 7.2.0(cli)(内置:2017年12月12日05:52:58)(NTS)版权所有(c)1997-2017 The PHP Group Zend Engine v3.2.0,版权所有(c)1998-2017 Zend Technologies with Zend OPcache v7.2.0,版权所有(c)1999-2017,由Zend Technologies提供
我正在使用Docker环境,为此创建了一个github存储库,如果我使用 7.1 版的PHP(shenron / docker-php- fpm:7.2),它可以工作。
我不明白为什么脚本会尝试启动此文件:/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
在我看来,有两种可能性:或者驱动程序不兼容,或者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)
(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找出哪些:
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可以在容器内正常工作。您需要将这些文件移动到合理的位置。
.so
LD_LIBRARY_PATH=/usr/local/instantclient_12_1/ php