1、需要Java库环境:
1)instantclient-basic-linux
以及 instantclient-sdk-linux
解压到相同目录即可
// 特别注意百度搜索出的第一个Oracle中文官方地址就是个坑,无法完成下载
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
2)编译安装oci8,可以直接通过pecl安装:oci8官方安装指导
pecl install oci8-2.2.0 // 注意php7需要的版本为2.2, php8需要的版本为3.0
// 安装过程中需要输入instantclient目录,输入格式如下:
instantclient,/path/to/instantclient_19_8,19.8
// 安装完成后记得添加oci8.so到php.ini文件
extension=oci8.so
3)安装pdo_oci支持
// 这个需要从源码安装,根据你本地安装的php版本,去php官方下载对应的源码([github](https://github.com/php/php-src))
cd ext/pdo_oci
./configure --with-pdo-oci=instantclient,/data1/oracle/instantclient_19_8,19.8
// 这个过程可能会遇到缺少一些库,安装对应的库即可
extension=pdo-oci.so
4)PDO连接测试代码
<?php
$tns = "
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))
(CONNECT_DATA =(SERVICE_NAME = databasename)
)
)";
$db_username = "username";
$db_password = "password";
$db = "oci:dbname=";
try {
$conn = new PDO($db.$tns.';charset=UTF8',$db_username,$db_password);
} catch(PDOException $e){
echo ($e->getMessage());
}
$sql="SELECT * FROM test";
$ret = $conn->query($sql);
// 打印错误
print_r($conn->errorInfo());
5)连接Oracle查询中文出现乱码
// 连接时增加指定字符集即可
new PDO($db.$tns.';charset=UTF8',$db_username,$db_password);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。