本文介绍如何在64位 Windows 上安装32位 PHP 的 OCI8 扩展和 Oracle Instant Client 的详细教程
环境配置:
- PHP版本 5.5 32位
- Windows7 64位
- Oracle 11g 客户端
- Apache 2.4
在 Windows 上启用 PHP OCI8 扩展
OCI8 是 PHP 扩展,一般默认不开启,用于连接到 Oracle 数据库,无论你是用哪种方式,pdo也好还是Windows直连也好,都需要oci8这个扩展。 如果配置了PHP系统环境变量可以用 cmd> php --ri oci8 命令来检查是否启用了oci8扩展。
php --ri oci8
安装OCI8
首先下载OCI8的扩展 我这里下的版本是5.5 Thread Safe (TS) x86 版本
注意:版本分为 Thread Safe 和 Non Thread Safe(其间区别可自行百度),一般Apache都选择Thread Safe,如果不放心可以用phpinfo看一下,在PHP Extension Build一栏有显示。为什么选择下x86版本的呢?因为我的php是32位的所以扩展也必须下32位的。下载完后,解压php_oci8.dll文件,拷贝到PHP扩展目录下,扩展目录在php.ini中 extension_dir = xxxxxx 指定。如果你的系统是64位则对应下载x64的版本即可。
如果启动apache时提示php_oci8不是有效的win32程序,那肯定是版本搞错了,下个正确的即可。
安装Oracle Client
Oracle Instant Client 是一组可轻松安装的免费库,允许程序连接到本地或远程 Oracle 数据库实例。
很多教程都直接添加扩展而忽略了oracle客户端的安装,这样php系统会报无法定位程序输入点OCILobRead2 于动态链接库OCI.dll上,很明显嘛,Windows找不到oci.dll文件
首先下载oracle客户端 我这里下的是 instantclient-basic-win32-11.1.0.6.0.zip 版本,注意一定要下与php相匹配的版本,如果你的php是32位的那oracle也要下32位的。
下载完后里面有oci.dll 这个文件,当启动了php的扩展后,找的也就是这个 oracle 文件。那 php 怎么找这个dll呢,加系统环境变量嘛,怎么加就不说了,需要的话留言吧。
最后,取消 php.ini 文件中php_oci8.dll的注释然后重启 Apache 即可
删除以下代码行前的分号:extension=php_oci8.dll