首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >php-oci8 - libclntsh.so.18.1:无法打开共享对象文件

php-oci8 - libclntsh.so.18.1:无法打开共享对象文件
EN

Stack Overflow用户
提问于 2019-04-17 01:49:12
回答 1查看 8.7K关注 0票数 0

在RHEL 6中,我通过remi存储库安装了PHP 7.2:

# yum --enablerepo=remi-php72 install php

已检查哪些模块预装了php -m。它没有列出。所以我开始安装它:

# yum --enablerepo=remi-php72 php72-php-oci8

Installed:
  php72-php-oci8.x86_64 0:7.2.17-1.el6.remi

Complete!

再次检查模块,oci8尚未加载。为了测试我用mbstring (默认情况下没有安装)尝试的所有模块是否都失败了:

# yum --enablerepo=remi-php72 install php-mbstring
Installed:
  php-mbstring.x86_64 0:7.2.17-1.el6.remi

Complete!

如果我这样做了,php -m会在那里成功列出mbstring。我是不是错过了oci8的什么东西?提前谢谢你。

更新

我已经用extension=oci8将这个扩展名添加到了php.ini文件中。然后我做了php -m

PHP警告:

启动:无法加载动态库'oci8‘(已尝试: /usr/lib64/ PHP /modules/oci8 (/usr/lib64/php/modules/oci8:无法打开共享对象文件:没有这样的文件或目录),/usr/lib64/php/modules/oci8.so (libclntsh.so.18.1:无法打开共享对象文件:没有这样的文件或目录)

看起来php在Oracle客户端找不到libclntsh.so.18.1库。所以我决定检查一下oracle的home lib来看看:

# ls -l libclntsh*
lrwxrwxrwx. 1 oracle oinstall       61 Mar 26 16:20 libclntsh.so -> /u01/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1
lrwxrwxrwx. 1 oracle oinstall       56 Mar 26 16:19 libclntsh.so.10.1 -> /u01/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so
-rwxr-xr-x. 1 oracle oinstall 47251283 Mar 26 16:20 libclntsh.so.11.1

我在想的是,当我当前的客户端是11g时,oci8扩展正在尝试加载这个用于18c oracle版本的库。不知道如何解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-17 03:58:23

要解决此问题,需要在此处下载Oracle Client 18.5.0 Base - Linux x86-64

https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

oracle用户身份解压源代码:

$ cd /u01/app/oracle/product/
$ mkdir 18.5.0
$ cd 18.5.0
$ wget -c https://download.oracle.com/otn/linux/instantclient/185000/instantclient-basic-linux.x64-18.5.0.0.0dbru.zip?AuthParam=1555443721_28dfadc632483f950d87ee5f54810e06 -O instantclient-basic-linux.x64-18.5.0.0.0dbru.zip
$ unzip instantclient-basic-linux.x64-18.5.0.0.0dbru.zip

执行ls时,您可以确认库就在那里:

$ ls -l instantclient_18_5/
total 227712
-rwxr-xr-x. 1 oracle oinstall     42360 Feb 26 20:04 adrci
-r-xr-xr-x. 1 oracle oinstall      5780 Feb 26 20:04 BASIC_LICENSE
-rw-r--r--. 1 oracle oinstall      1632 Feb 26 20:04 BASIC_README
-rwxr-xr-x. 1 oracle oinstall     66672 Feb 26 20:04 genezi
-rwxrwxr-x. 1 oracle oinstall   8357160 Feb 26 20:04 libclntshcore.so.18.1
lrwxrwxrwx. 1 oracle oinstall        17 Apr 16 20:42 libclntsh.so -> libclntsh.so.18.1
-rwxrwxr-x. 1 oracle oinstall  78200832 Feb 26 20:04 libclntsh.so.18.1
-r-xr-xr-x. 1 oracle oinstall   3551217 Feb 26 20:04 libipc1.so
-r-xr-xr-x. 1 oracle oinstall    467932 Feb 26 20:04 libmql1.so
-r-xr-xr-x. 1 oracle oinstall   6636088 Feb 26 20:04 libnnz18.so
lrwxrwxrwx. 1 oracle oinstall        15 Apr 16 20:42 libocci.so -> libocci.so.18.1
-r-xr-xr-x. 1 oracle oinstall   2282891 Feb 26 20:04 libocci.so.18.1
-rwxr-xr-x. 1 oracle oinstall 126959616 Feb 26 20:04 libociei.so
-r-xr-xr-x. 1 oracle oinstall    160875 Feb 26 20:04 libocijdbc18.so
-r-xr-xr-x. 1 oracle oinstall    394835 Feb 26 20:04 libons.so
-r-xr-xr-x. 1 oracle oinstall    117635 Feb 26 20:04 liboramysql18.so
drwxr-xr-x. 3 oracle oinstall      4096 Feb 26 20:04 network
-r--r--r--. 1 oracle oinstall   4161744 Feb 26 20:04 ojdbc8.jar
-r--r--r--. 1 oracle oinstall   1398331 Feb 26 20:04 ucp.jar
-rwxr-xr-x. 1 oracle oinstall    242008 Feb 26 20:04 uidrvci
-rw-r--r--. 1 oracle oinstall     74263 Feb 26 20:04 xstreams.jar

最后,为了让LD_LIBRARY_PATH在哪里找到库,必须设置PHP变量:

$ export LD_LIBRARY_PATH=/u01/app/oracle/product/18.5.0/instantclient_18_5

现在,您可以检查oci8是否在此处正确列出:

$ php -m
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mbstring
oci8
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55713955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档