wordpress 三站合一,企业标识系统,做什么网站最赚钱,制作网页设计公司目录 概念基本步骤详细操作问题排除参考 概念
要连接Oracle数据库#xff0c;必须有两个东西#xff0c;一个PHP官方写的扩展#xff0c;一个Oracle官方写的客户端PHP是通过扩展去操作oralce客户端连接的服务端数据库#xff0c;所以两个都不能少#xff0c;而且版本必须… 目录 概念基本步骤详细操作问题排除参考 概念
要连接Oracle数据库必须有两个东西一个PHP官方写的扩展一个Oracle官方写的客户端PHP是通过扩展去操作oralce客户端连接的服务端数据库所以两个都不能少而且版本必须一致PHP官方写的Oracle扩展oci8有很多版本还有32位和64位每个版本官网有写对于的oracle版本Ocracle官方写的客户端Instant Client也分为32位和64位需要根据PHP匹配下面会讲
基本步骤
下载并配置oci8扩展下载并配置oracle客户端配置thinkphp
详细操作
下载并配置oci8扩展
下载地址http://pecl.php.net/package/oci8 如何选择版本打开phpstudy环境打开首页phpinfo.php查看PHP版本 这里7.0.12选择32位的oci8扩展32位的Instant Client下载对于版本7.3以上的PHP要选择2.2.0以上版本这里选择7.0对于的版本因为使用的phpstudy2016使用的PHP版本是php-7.0.12-nts注意对应版本的位数32和64不能兼容解压后把这些全部拷贝到PHP的ext目录下D:\phpStudy\php\php-7.0.12-nts\ext打开php.ini找到extension所在填写以下内容
extensionphp_pdo_oci.dll
extensionphp_oci8.dll
;;extensionphp_oci8_11g.dll
extensionphp_oci8_12c.dll说明 php_pdo_oci.dll这个是phpstudy自带的使用pdo方法去连接oci8这个必须打开 php_oci8.dll这个是拷贝进入的oci8基本扩展必须打开 php_oci8_11g.dll / php_oci8_12c.dll这个是扩展版本实测任意打开一个都可以连接oracle 11g和oracle 19c后面一个感觉速度更快重启phpstudy出现oci8扩展说明安装成功 新安装的Oracle Run-time Client Library Version可能出现0.0.0.0等配置Instant Client后再刷新会出现版本信息
下载并配置oracle客户端
下载地址https://www.oracle.com/database/technologies/instant-client/downloads.html这里也有版本选择不管phpinfo是32还是64这里都下载32位实测32位可以匹配64和32的PHPphpstudy_pro中PHP7.3.4版本测试下载需登录注册一个账号即可这里选择phpinfo中提示的instantclient_12_1 解压到任意没有中文路径的地方如D:/instantclient_12_1配置环境变量这个和JAVA类似就是可以在任何地方执行instantclient_12_1中功能这个必须要配置最终连接Oracle数据库的是instant client客户端这个和oracle不匹配直接导致无法连接实测32位可以匹配PHP64或者32instant client版本还和oracle服务端版本有关32位不行就换一个试试
配置thinkphp
common-config中配置
?php
return array(//连接oracle 11g r2DB_TYPE oracle, // 数据库类型DB_HOST 127.0.0.1, // 服务器地址DB_NAME orcl, // 数据库名DB_USER usr, // 用户名DB_PWD pwd, // 密码DB_PORT 1521, // 端口//连接oracle 19c CBD模式// DB_TYPE oracle, // 数据库类型// DB_HOST 127.0.0.1, // 服务器地址// DB_NAME orcl, // 数据库名// DB_USER C##usr, // 用户名// DB_PWD pwd, // 密码// DB_PORT 1521, // 端口
);书写测试连接方法
?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {public function index(){$sql select * from tablea where rownum 10 ;$rs M()-query($sql);var_dump($rs);}
}经实测11G和19C都可以连接
问题排除 oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that PATH includes the directory with Oracle Instant Client libraries 解决方案Instant Client没有配置在环境变量中配置一下即可 SQLSTATE[HY000]: OCIEnvNlsCreate: Check the character set is valid and that PHP has access to Oracle libraries and NLS data (ext\pdo_oci\oci_driver.c:688) 解决方案Instant Client版本不匹配如果是64位的换成32位的试一试
参考
https://blog.csdn.net/qq_35372797/article/details/120791792 按照这篇文章配置出现编码错误实际上是Instant Client版本不匹配换成32位的就可以了