经验:php5.6连接oracle数据库(windows版) [ 新手入门 ]
今天尝试了一下连接oracle数据库,在配置过程中出现很多错误,从“未知的驱动”、“找不到监听器”到“目前不知道服务的连接描述符请求”,通过使用各种技能(百度、谷歌和stackoverflow)最终成功连接上了oracle,这其中的安装配置过程比sqlserver要复杂,现在记录安装与除错过程备查,也给需要连接oracle的网友提供一些思路。
第一步,需要打开php的oci扩展
在5.6版的ext文件夹中,只有php_oci8_12c.dll文件,所以我们需要修改php.ini文件中的内容:
;注释掉下面两句
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
;添加这一句
extension=php_oci8_12c.dll
第二步,下载客户端工具instantclient
链接:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
官网的instantclient下载链接不知为什么提示错误的url,我是从CSDN网友提供的资源中下载的,请自行搜索。
需注意的是其中有64位和32位版,请下载相应的版本,然后解压到任意一个文件夹,例如d:\instantclient
,解压完毕后拷贝文件夹下的所有文件到系统文件夹中,32位对应c:\windows\system32
, 64位对应c:\windows\sysWOW64
第三步,添加环境变量
首先在你解压后的文件夹中,新建network/admin
文件夹备用,然后添加两个环境变量:
ORACLE_HOME d:\instanctclient
TNS_ADMIN d:\instanctclient\network\admin
第四步,创建tnsnames.ora文件
在d:\instanctclient\network\admin文件夹中,新建tnsnames.ora文件,然后添加下面的内容:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 主机名或IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 服务名)
)
)
其中的服务名
很重要,如果写错就会出现TNS:listener does not currently know of service requested in connect descriptor
错误,应该是你的oracle服务器的服务名,具体的意义我也不知道,我是从服务器的oracle所在文件夹下的product\10.2.0\db_1\network\ADMIN\tnsnames.ora
文件中得到的。
第五步,测试是否可以正确的连接oracle。
经过以上配置后,为了确保能正确加载一些文件和配置,请重启电脑。
通过PHP的PDO来测试
// ORCL就是我们在tnsnames.ora中的名字
$pdo = new PDO("oci:dbname=ORCL", "user", "password");
下面是我在yii2.0中的配置
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'oci:dbname=ORCL',
'username' => 'user',
'password' => 'pwd',
'charset' => 'utf8',
],
以上就是我配置oracle中的过程,希望能帮助到大家,谢谢。
共 0 条回复
qhdtc5
最后登录:2017-05-12
在线时长:2小时39分
- 粉丝2
- 金钱105
- 威望0
- 积分125