Windows 下php+apache配置支持Oracle

来源:互联网 发布:java集合教务管理系统 编辑:程序博客网 时间:2024/05/22 09:42

第一次配置动手php支持Oracle,走了很多弯路才配置成功。在此写这个文档,希望可以和大家分享,帮助遇到相同问题的朋友。

在Windows下用Php配置Oracle的基本要点:

1.在php.ini文件中去掉extension = php_oci8.dll和extension = php_pdo_oci.dll前的分号;

提示:php_oci8.dll至少是oracle 10版本的,如果是oracle 11版本以后的,可以选择去掉extension = php_oci8_11g.dll前的分号。

2.需要下载Oracle客户端,客户端的位数要和apache的相同。Oracle instantclient并不需要安装,只要解压到自定义目录$dir下即可,比如这里的G:\Oracle\client\instantclient_11_2。

提示1:在没有oracle客户端时,PHP无法加载php_oci8.dll模块,原因是php_oci8.dll依赖的相关组件没有找到。

     虽然且打开了 extension=php_oci8.dll,但是查看apache的日志(在logs/error.log中),发现类似的错误

       PHP Warning:  PHP Startup: Unable to load dynamic library 

 提示2:如果oracle客户端的位数与apache不同,还是会找不到oracle的oci.dll文件。比如当前apache是32位的,

      但oracle客户端是64位的,apache的日志会提示

     php_oci.dll文件不是有效的Win32应用程序。

3.在$dir目录下创建TNS目录,比如这里的G:\Oracle\client\TNS,要与oracle客户端是同根目录。并在TNS目录下创建tnsnames.ora文件。

tnsnames.ora文件的例子如下:

WHKD =
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.210.1.23)(PORT = 1521))
    )
  (CONNECT_DATA =
    (SERVICE_NAME = orcl)
    )
  )

其中WHKD是网络服务名,orcl是服务名(你要访问的数据库名),10.210.1.23是你要访问的主机名,1521是端口号.

4.配置环境变量PATH和TNS_ADMIN、NLS_LANG

把oracle客户端的路径添加到path变量里,比如这里的G:\Oracle\client\instantclient_11_2。

  创建新的环境变量TNS_ADMIN,设置值为TNS的路径,比如这里的G:\Oracle\client\TNS.

  创建新的环境变量NLS_LANG值为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK.

5.重启apache服务,查看phpinfo()时可以看到pdo里面包括了oci,则说明已配置成功。

6.测试代码。

<?php

$conn = oci_connect("username","password","tnsname");

?>

其中username和password是连接数据库的用户名和密码,tnsname是你在tnsnames.ora中创建的网络服务名,比如这里的WHKD.

0 0
原创粉丝点击