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

PHP-OCH8-libclntsh.so.18.1:无法打开共享对象文件

谭向晨
2023-03-14

在RHEL 6中,我通过remi存储库安装了PHP7.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-mmbstring成功地列在那里。我错过了什么与ococ8?提前谢谢你。

我已经将扩展添加到php中。扩展名为oci8的ini文件。然后我做了php-m

PHP警告:PHP启动:无法加载第0行中未知的动态库“oci8”(已尝试:/usr/lib64/PHP/modules/oci8(/usr/lib64/PHP/modules/oci8:无法打开共享对象文件:无此类文件或目录),/usr/lib64/PHP/modules/oci8.so(libclntsh.so.18.1:无法打开共享对象文件:无此类文件或目录))

看起来php找不到libclntsh。所以18.1来自Oracle客户端的库。所以我决定查看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时,ococ8扩展正试图为18c oracle版本加载这个库。不知道如何解决它。


共有1个答案

苗盛
2023-03-14
匿名用户

要解决此问题,需要下载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\u LIBRARY\u PATHenv变量,以便让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

 类似资料:
  • 问题内容: 我试图从控制台开始调试我的应用程序。 然后在gdb中 我得到的输出: 系统配置如下: 问题答案: 您可以在gdb中使用该命令来更改gdb用于启动要调试的程序的环境。从gdb帮助中提取: 范例:

  • 问题内容: 我有一个二进制文件和一个共享库。共享库使用以下命令进行编译: 二进制文件使用以下命令进行编译: 我进去了 到输出路径。 从控制台调试工作正常: 但是,从Emacs22启动gdb失败,并显示以下消息: 启动程序:/ mnt / sda5 / Programming / main / src / mainx / mnt / sda5 / Programming / main / src /

  • 尝试在我的14.10版ubuntu上安装rJava包,使用以下代码 在重新安装jdk后,遇到了一些与jni相关的错误,包括jni问题,并尝试再次运行相同的代码,得到了该错误 寻找解决方案,找到所有建议(对于x64)执行这些命令的人 但这不起作用,我还能做什么?我会提供任何需要的细节。

  • 我有一个巨大的麻烦来运行我的代码。我已经尝试过重新安装packges,在环境中安装等等,但是我认为我做得不对。 我得到这个信息: 使用TensorFlow后端。 回溯(最近一次呼叫最后一次): 文件“”,第1行,在导入keras中 文件“/home/wagner/anaconda3/lib/python3.5/site packages/keras/init.py”,第3行,在from中。导入UT

  • 我正在尝试安装tensorflow的对象检测模块,但在运行以下命令时: python3对象检测/builders/model\u builder\u test.py 我得到以下错误。我已经安装了CUDA8.0,9.0,9.1和cuDNN 6和7,但仍然有以下错误。我感谢你的建议,谢谢! 回溯(最后一次调用):文件“/usr/local/lib/python3.5/dist-packages/ten

  • 我正在编写一个在后端使用redis的C程序。 我尝试过构建/安装hiredis(make 使用以下命令行构建:gcc-v example.c-l hiredis-I/usr/local/include/hiredis/ 我尝试过的事情: pkg info hiredis返回0 通过(make)卸载/重新安装 都没有运气。 我猜我没有为gcc正确链接程序,但是文档中没有任何构建示例。 我做错了什么,