php - 无法加载动态库 'oci8.so'(PHP 7.2)

标签 php docker oci8

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

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

我正在使用 Docker 环境,我为此创建了一个 github 存储库,如果我使用 7.1 版本的 PHP ( 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 只是对共享库文件名的第二次猜测。您可以安全地忽略它。

实际问题是:(尝试过:/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so(libmql1.so:无法打开共享对象文件:否这样的文件或目录)

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 文件的一部分。 像这样 LD_LIBRARY_PATH=/usr/local/instantclient_12_1/php 运行 PHP 在容器内工作得很好。您需要将这些 so 文件移动到一个正常的位置。

关于php - 无法加载动态库 'oci8.so'(PHP 7.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47833041/

相关文章:

php - 如何在 Mac OS X 10.8 Mountain Lion 上安装 OCI8 PHP 扩展

javascript - AJAX 不发送变量写入 txt

php - 如何使用codeigniter通过下拉菜单过滤数据库中的记录

php - 通知: Undefined index in php even i defined index correct

docker - 通过 GUI 访问 Windows 2016 Server Container(Docker 容器)?

ruby-on-rails - 在 ubuntu 14.04 x64 上安装 ruby​​-oci8 时出错

oracle - 尝试在 Linux/Ubuntu 上使用 oracle 库构建静态 CGO 可执行文件

php - Fine Uploader 到 S3 桶得到 405 Method Not Allowed 错误

docker - 在Docker教程中 curl 到elasticsearch容器是否返回 “unlisted”容器?

linux - 在 docker 中使用覆盖层使用多主机网络功能需要 swarm