下载 oracle 的 instantclient https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html :
1 | cd /home/bao |
如果没有安装 unzip:
1 | apt install unzip |
放到 /opt/oracle/ 目录下(可选项):
1 | mkdir /opt/oracle |
设置环境变量:
1 | export LD_LIBRARY_PATH=/opt/oracle/instantclient_21_11:$LD_LIBRARY_PATH |
添加环境变量到 .bashrc,使终端重启时仍然生效:
1 | vi ~/.bashrc |
在最后一行添加:
1 | export LD_LIBRARY_PATH=/opt/oracle/instantclient_21_11:$LD_LIBRARY_PATH |
保存后,运行如下命令使其生效:
1 | source ~/.bashrc |
我选择的 instantclient 需要 glibc 2.14 以上的版本,安装参考 Ubuntu 安装 glibc。
可通过如下命令查看 glibc 版本 :
1 | ldd --version |
下载 oci8 并解压:
1 | cd ~ |
安装 oci8:
1 | phpize |
成功后的消息:
1 | Libraries have been installed in: |
编辑 php.ini,在 【Dynamic Extensions 】后添加如下内容:
1 | extension=oci8.so |
1 | vi /etc/php/8.2/cli/php.ini |
在 cli 模式下用的好好的,但是部署到服务器后,出现错误 Undefined constant "Yajra\Pdo\OCI_DEFAULT" found ,最后解决方法:
1 | sudo sh -c "echo /opt/oracle/instantclient_21_11 > \ |
这样总算可以了!!!
参考:
https://pecl.php.net/package/oci8
https://www.php.net/manual/zh/oci8.installation.php
–
高版本需要安装 glibc 2.14 及以上版本
ZIP 文件安装
在官网 http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 下载:Instant Client Package - Basic 和 Instant Client Package - SDK ,我选的版本是Version 21.1.0.0.0,下载 zip 格式的, 由于需要登录,所以最好在桌面电脑下载好,然后上传到 Ubuntu 服务器。我上传到 /opt/oracle 目录,在下载页面的底端,有安装的文档,我也把我安装的过程写出来:
1、解压:
使用 unzip 命令,可通过 sudo apt-get install unzip 安装。
1 | unzip instantclient-basic-linux.x64-21.1.0.0.0.zip |
解压到的目录是 /opt/oracle
2、创建适合的软连接
libclntsh.so,libocci.so 这两文件已经有了,但是发现会报错,删除后,建立软连接:
1 | cd /instantclient_21_1 |
3、安装 oci8
一点准备:
1 | apt-get install make //为了后面的编译软件使用 |
运行 sudo pecl install oci8-2.2.0 命令,

出现如上界面,按提示输入:
1 | instantclient,/opt/oracle/ |
回车,不出意外,会安装成功。

按提示,把 extension=oci8.so 添加到 /etc/php/7.4/fpm/php.ini 和 /etc/php/7.4/cli/php.ini 中,可通过 php -m 或 echo phpinfo() 查看。
遇到的问题:


把缺失的文件拷贝到相应目录即可。

参考: