win8.1x64 + PHP +PDO + Oracle + IIS

来源:互联网 发布:常州新一代造价软件 编辑:程序博客网 时间:2024/04/30 14:16

win8.1x64 + PHP +PDO + Oracle + IIS

前言

         勉强算是原创吧,各种网上找资料,试了几遍之后有点眉目了终于成功了。

         当前环境:

         Win8.1x64

         PHP5.3

         Instantclient12.1

         IIS8

         注:我的机器上并没有安装其它Oracle数据库相关客户端

         PHP连接Oracle比连接MySQL麻烦。

         PHP可以直连MySQL,但是想连Oracle,必须安装/下载Oracle提供的一套连接工具:instantclient

下载地址:http://www.oracle.com/technetwork/topics/winsoft-085727.html

注意!请下载32位的,因为PHP是32位的,不认识64位的。

第一步:安装IIS+PHP

         安装IIS+PHP

         推荐文章:http://blog.sina.com.cn/s/blog_63426ff90101cpt3.html

         哦,文章里的IIS开启的东西挺多的,有些可以不勾,比如.NET3.5、4.5

第二步:下载、配置instantclient

         下载、配置instantclient

下载:http://www.oracle.com/technetwork/topics/winsoft-085727.html

配置:解压文件,然后把解压地址写入环境变量PATH

我这边:解压到:D:\ProgramFiles\Oracle\instantclient_12_1x32

环境变量中:PATH = …(原有值); D:\ProgramFiles\Oracle\instantclient_12_1x32

第三步:配置PHP的PDO、OCI

         配置PDO、OCI

         修改php.ini(在第一步中,这玩意儿应该就在C:\Windows\目录下)

         开启OCI、PDO支持:

         取消几个extention的注释就好了:

         extension=php_oci8_11g.dll

; Use with Oracle 11gR2 Instant Client

extension=php_openssl.dll

extension=php_pdo.dll

;extension=php_pdo_firebird.dll

;extension=php_pdo_mssql.dll

extension=php_pdo_mysql.dll

extension=php_pdo_oci.dll

第四步:重启IIS检验

         重启IIS

         使用phpinfo()函数查看当前PHP配置信息

         着重检查以下几个地方:

²  环境变量


我之前就有个bug是环境变量一直未生效,重启电脑后环境变量才生效

²  OCI支持

²  PDO.OCI


验收成果

         define("DATA_SOURCE_NAME","oci:dbname=//***.**.160.7:1521/db;charset=UTF8");

define("DB_USER_NAME","*********");

define("DB_PASS_WORD","*********");

 

/**

 * 使用PDO进行数据库操作

 * @return \PDO

 * @throws Exception

 */

functiongetPDO() {

  if (defined("DATA_SOURCE_NAME")) {

    $dsn = DATA_SOURCE_NAME;

    $userName = DB_USER_NAME;

    $passWord = DB_PASS_WORD;

    $options = array(

        PDO::MYSQL_ATTR_INIT_COMMAND => 'SETNAMES utf8mb4',

        PDO::ATTR_PERSISTENT => TRUE

    );

    $pdo = new PDO($dsn, $userName, $passWord,$options);

    return $pdo;

  } else {

    throw new Exception("必须定义DATA_SOURCE_NAME才可以使用PDO.");

  }

}

感想

²  我这边的PHP本身是x86的32位编译成果,所以不支持x64的扩展,这点要牢记。

²  目前看来,PHP本身很难连接Oracle,所以干脆采用Oracle提供的instantclient,而且网上的资料里一直提到oci,而instantclient里有一个oci.dll,目测PHP是调用了此DLL文件。

²  PATH环境变量的作用,当你使用win+R输入notepad命令的时候,启动了notepad.exe(记事本),为什么?因为windows根据PATH常量自动搜索到了C:\Windows\notepad.exe程序,目测来看,搜索的操作大概是这样的:

                  $cmd = “notepad”;

                  $fullName = PATH . $cmd . (.exe|.dll|.lnk);

也就是说,你把桌面的QQ快捷方式QQ.lnk丢到C:\Windows\目录里,再使用win+R输入qq,就会打开QQ登录界面。

²  oci.dll + PATH,那么PHP连接Oracle也许就是:

callWindowsCmd(‘oci’, dsn = DSN, username= USERNAME)……

免责声明

         反正我是成功了,如果你看了这篇文章还是没配置成功……不关我的事哦……

0 0
原创粉丝点击