当前位置: 首页 > 知识库问答 >
问题:

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

钱嘉致
2023-03-14

由于PHP7.1更新为PHP7.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/本地/lib/php/扩展/no-debug-non-zts-20170718/oci8.so.so:无法打开共享对象文件:没有这样的文件或目录))在第0行未知

PHP 7.2.0(cli)(内置:12 2017 05:52:58)12月(NTS)版权(c)1997-2017 PHP集团Zend Engine v3.2.0,版权(c)1998-2017 Zend Technologies与Zend OPache v7.2.0,版权(c)1999-2017,由Zend Technologies

我使用的是Docker环境,我为此创建了一个github repo,如果我使用PHP的7.1版(shenron/Docker PHP fpm:7.2),它就可以工作。

我不明白脚本为什么尝试启动此文件:/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8。所以所以

在我看来,有两种可能性;或者驱动程序不兼容,或者pecl今天无法安装oci8。

有人有同样的问题吗?

谢谢你的帮助。

共有3个答案

杨景山
2023-03-14

如果运行ldd/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8。因此为您提供了类似以下内容,其中包含丢失的文件

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

您可以像这样将文件夹添加到ldconfig(其他读者-您的路径可能会有所不同):

echo /usr/local/instantclient_12_1/ > /etc/ld.so.conf.d/oracle-instantclient.conf

然后运行ldconfig读取新配置。

林蕴藉
2023-03-14

对于任何遇到这个问题的人,这里是在linux中处理它的正确方法。(我在下面的演示中使用CentOS命令,但Ubnutu应该没有什么不同)

编辑:感谢克里斯多夫·琼斯的评论,您可以在https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/找到直接的转速链接

wget oracle-instantclient18.3-basic-18.3.0.0.0-1.x86_64.rpm 
wget oracle-instantclient18.3-devel-18.3.0.0.0-1.x86_64.rpm 
yum install oracle-instantclient18.3-basic-18.3.0.0.0-1.x86_64.rpm
yum install  oracle-instantclient18.3-devel-18.3.0.0.0-1.x86_64.rpm 
sudo sh -c "echo /usr/lib/oracle/18.3/client64/lib > /etc/ld.so.conf.d/oracle.conf"
sudo ldconfig
php -v
# and you should get something like
PHP 7.2.12 (cli) (built: Nov  6 2018 16:40:25)...
昝枫
2023-03-14

/usr/本地/lib/php/扩展/no-debug-non-zts-20170718/oci8.so.so只是共享库文件名的第二个猜测。你可以放心地忽略这一点。

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

oci8。因此本身取决于多个共享库,您可以使用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

那些是。因此文件似乎是存储库中zip文件的一部分。像这样运行PHPLD_LIBRARY\u PATH=/usr/local/instantclient\u 12\u 1/PHP在容器中运行良好。您需要将这些so文件移动到一个正常的位置。

 类似资料:
  • 问题内容: 从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:无法打开共享对象文件

  • 我有高塞拉操作系统-版本10.13.6 PHP版本:PHP 7.1.9 当我尝试做命令总是出现这样的错误: PHP启动:无法加载动态库'/usr/本地/php5-7.1.9-20170914-100859 /lib/php/extensions/no-debug-non-zts-20160303/imagick.so'-dlopens(/usr/本地/php5-7.1.9-20170914-100

  • 我有64位Windows 7、IIS 7,并在IIS上安装了PHP。我启用了php_oci8。用于Oracle连接的dll,但出现以下错误: 我已经检查了php_oci8。dll存在于:“C:\Program Files(x86)\PHP\v5”中。5\ext\php\u oci8。dll' 我的php。见下: 我在http://www.oracle.com/technetwork/topics/

  • 在Postgresql版本10中创建扩展时出错 无法加载库"C:/Program Files/PostgreSQL/10/lib/plpython3.dll":找不到指定的模块 注意:在窗口10上使用Postgresql 10

  • 问题内容: 我是初学者。我正在尝试在php上安装mongodb驱动程序。 请按照此处的说明进行操作:http : //php.net/manual/zh/mongo.installation.php#mongo.installation.windows 我已经用VC11尝试了所有php_mongo.dll文件,并将其放在php / ext文件夹中。并添加到php.ini文件中,但是当我尝试在xam

  • 本文向大家介绍c++实现加载so动态库中的资源,包括了c++实现加载so动态库中的资源的使用技巧和注意事项,需要的朋友参考一下 实例如下: 以上就是小编为大家带来的c++实现加载so动态库中的资源全部内容了,希望大家多多支持呐喊教程~