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官网装置领导
<code class="shell">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);