您的错误显示内置类型不匹配。
按照以下步骤解决:
确保在http://www.oracle.com/technetwork/topics/winsoft-085727.html 下载并安装 oracle instantclient,但请注意:
- 记下您的 Oracle 数据库版本;对 Oracle 数据库 12c 使用 12.1.x 版,对于 11g 版本使用 11.1.x 版。
- 无论哪种情况,请确保您下载了 Oracle 即时客户端的 Basic Lite 版本。
之后,将 Oracle 即时客户端的位置添加到环境变量下的系统变量路径中。同样确保您的 xampp 及其 ext 的 PHP 都可用并在那里设置(如果没有,请添加它们)。
然后,继续添加一个新的系统变量,其中 TNS_ADMIN 作为变量名,Oracle 即时客户端的位置 作为变量值.
另外,使用与 值相同的Oracle Instantclient 位置定义您的用户变量PATH。
在此阶段之后,重新启动计算机以完全传播新定义的环境变量。
打开后,您可以打开 Windows 命令提示符 并运行 where oci* 以确保您已明确定义了环境变量;响应应如下所示:
C:\Users\flex>where oci*
C:\oraclexe\app\oracle\product\11.2.0\server\bin\oci.dll
C:\oraclexe\app\oracle\product\11.2.0\server\bin\ocijdbc11.dll
C:\oraclexe\app\oracle\product\11.2.0\server\bin\ocijdbc11.sym
C:\oraclexe\app\oracle\product\11.2.0\server\bin\ociw32.dll
C:\instantclient_11_2\oci.dll
C:\instantclient_11_2\oci.sym
C:\instantclient_11_2\ocijdbc11.dll
C:\instantclient_11_2\ocijdbc11.sym
C:\instantclient_11_2\ociw32.dll
C:\instantclient_11_2\ociw32.sym
如果没有,你一定错过了什么,需要重新审视这个过程,确保有效地完成它。
您现在可以继续到您的 php.ini 文件(前提是环境变量定义明确)并通过取消注释来启用您的 oci 扩展(php_oci8.dll 和 php_oci8_11g.dll);您可以通过简单地删除上述扩展之前的半列 (;) 来实现。
请记住保存您的 php.ini 文件,然后,如果 apache 尚未运行,请重新启动或启动它。
要检查您的 PHP oci8 配置是否启用,您可以返回 Windows 命令提示符并运行:php --ri oci8;响应应类似于以下响应:
C:\Users\flex>php --ri oci8
OCI8 Support => enabled
OCI8 DTrace Support => disabled
OCI8 Version => 2.1.1
Revision => $Id: 86f22a208f89dcd5b305e82929a7429683968b11 $
Oracle Run-time Client Library Version => 11.2.0.4.0
Oracle Compile-time Instant Client Version => 10.2
Directive => Local Value => Master Value
oci8.max_persistent => -1 => -1
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20
oci8.default_prefetch => 100 => 100
oci8.old_oci_close_semantics => Off => Off
oci8.events => Off => Off
Statistics =>
Active Persistent Connections => 0
Active Connections => 0
或者,您可以创建一个以<?php phpinfo(); ?> 为内容的 PHP 文件,然后在浏览器中打开它并搜索 oci8 匹配项;它也应该在那里显示启用。