如何在 Ubuntu 18.04 上安装 Oracle OCI8 instantclient

如何在 Ubuntu 18.04 上安装 Oracle OCI8 instantclient

我想分享一些有关安装 OCI8 来访问 Oracle 数据库的信息。

如果你收到类似“的错误PHP 启动:无法加载动态库“oci8.so”

或者 ”检查 Oracle Instant Client 库版本兼容性...配置:错误:未找到从 libclntsh.so 到 /opt/oracle/instantclient/libclntsh.so.*.1 的链接

或者只是想安装 Quick&Easy OCI8 来建立 php 和 Oracle 数据库之间的连接,那么您来对地方了!

答案1

第一个先决条件是正常运行的 apache2 和 php7.2(Ubunti 18.04)环境。

  1. 从 Oracle 网站下载基本包(如 instantclient-basic-linux.x64-12.2.0.1.0.zip)和 sdk 包(instantclient-sdk-linux.x64-12.2.0.1.0.zip)http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html

  2. 将两个文件上传到你的网络服务器,你可以使用 WinSCP 来实现

  3. 在服务器上解压两个文件,在我的例子中,你将得到一个名为“instantclient_12_2”的新文件夹

4a. 创建目标文件夹

mkdir /opt/oracle

4b. 移动并重命名 instantclient 文件夹

mv instantclient_12_2 /opt/oracle/instantclient

4c. 更改文件夹权限

chown -R 根目录:www-数据/opt/oracle

  1. 检查您是否具有安装 OCI8 所需的软件包

apt 安装 php7.2-dev php-pear build-essential libaio1

  1. 创建必要的软链接

ln -s /opt/oracle/instantclient/libclntsh.so.12.1 /opt/oracle/instantclient/libclntsh.so

ln -s /opt/oracle/instantclient/libocci.so.12.1 /opt/oracle/instantclient/libocci.so

7a. 将即时客户端添加到 ld 配置文件

回显 /opt/oracle/instantclient > /etc/ld.so.conf.d/oracle-instantclient.conf

7b. 更新动态链接器运行时绑定

ldconfig

8a. 现在通过 pecl 安装 OCI8

pecl 安装 oci8

8b. OCI8 安装要求您提供正确的文件夹

instantclient,/opt/oracle/instantclient

9a. 将 oci lib 添加到 cli php 配置(控制台 php)

回显“扩展 = oci8.so”>> /etc/php/7.2/cli/php.ini

9b. 将 oci lib 添加到 apache php 配置中

回显“扩展 = oci8.so”>> /etc/php/7.2/apache2/php.ini

10a. 设置 CLI 版本的环境变量(之后需要重启服务器)

回显“LD_LIBRARY_PATH=\”/opt/oracle/instantclient\“”>> /etc/environment

回显“ORACLE_HOME = \” / opt / oracle / instantclient \“”>> / etc / environment

10b. 设置 apache 版本的环境变量

回显“导出 LD_LIBRARY_PATH=\”/opt/oracle/instantclient\“”>> /etc/apache2/envvars

回显“导出 ORACLE_HOME=\”/opt/oracle/instantclient\“”>> /etc/apache2/envvars

  1. 重启 Apache

服务 apache2 重启

  1. 大功告成,现在可以测试与 Oracle 数据库的连接

=PHP 连接示例=

<?php
// Create connection to Oracle, change HOST IP and SID string!
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 000.000.000.000)(PORT = 1521)))(CONNECT_DATA=(SID=XXX)))";
// Enter here your username (DBUSER) and password!
$conn = oci_connect("DBUSER", "PASSWORD",$db);
if (!$conn) {
   $m = oci_error();
   echo $m['message']. PHP_EOL;
   exit;
}
else {
   print "Oracle database connection online". PHP_EOL;
}

?>

相关内容