biggates的心得

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
近日换用 Windows 7 x64 ,在64位兼容性方面遇到诸多不便(多为x86和x64相互调用过程中的问题)。先整理如下:

1、背景
更换系统后,习惯性的重装各种“大件”,其中 VS 2008 自动安装了 x64 版,MySQL也装了官方提供的 x64 版。Apache 和 PHP 仍然使用原来的 x86 版。Navicat Lite 只有 x86 版,系统自动为其设置了兼容模式。由于官方的说明中写了支持 x64 系统,因此直接安装了 ODT(With ODAC),结果发现也是 x86 的。一切似乎都很顺利,于是第一天就这样过去了。
2、问题
首先发现 php_mysql 和 php_mysqli 无法载入,查看日志后发现是 32 位模式的 php 无法载入 64位的 MySQL 客户端,因此尝试换用 64位的 Apache 和 PHP。经过多方搜索,分别找到了相应的非官方版本,但无法启动。于是舍弃了64位的 MySQL,直接找了个 XAMPP 装上。现在 PHPMyAdmin 和 Navicat 都可以正常使用,php_oci8 也一切正常。
3、关于 VS 2008 和 Oracle
一日,在一个 Oracle 项目中,发现 VS 2008 在调用 NHibernate 访问 Oracle 时,报出异常:“无法在64位程序中使用 32 位的 Oracle Client”。在 Oracle 官网查询后,发现只有 instant Client 有单独的 x64 版本,ODT 没有。十分郁闷。尝试用 x64 的 instant client 替换现有的 ODT后,php 和 Navicat 又无法调用 oci 了。
4、解决
安装了 x64 的 instant client,另将 x86 的 instant client 解压出来,复制到 apache 的 bin 目录中,php 成功调用 oci 。
在 navicat 的选项中,手动指定了32位 oci.dll 和 sqlplus.exe 的位置,也能正常使用了。
5、总结
Windows 7 x64
Visual Studio 2008 SP1 x64
XAMPP x86
使用 ODT With ODAC x86 设置好环境变量后,使用 Oracle Instant Client x64 替换同名文件
Oracle Instant Client x86 使用应用程序自己的路径

Technorati 标签: x64, oracle, apache, php, mysql, xampp,
posted on 2009-12-28 14:38  biggates  阅读(1345)  评论(0编辑  收藏  举报