如何在 win7 x64 上使用带有 php (xampp) 的 oracle 客户端 11.2
How to use oracle client 11.2 with php (xampp) on win7 x64
我刚刚在我的 win7 (x64) PC 上安装了一个 acutal XAMPP 来编写一些 PHP 脚本来连接到 oracle 数据库。我还安装了一个普通的 oracle 11.2.0 客户端(PATH 和 ORACLE_HOME 设置正确)。客户端用于我的所有其他工作,没有任何问题。
当我尝试连接到 Oracle 数据库时 PHP 失败并显示 Fatal error: Call to undefined function oci_connect() in
。我记得几年前我在 x32 winXP PC 上做同样的事情时,我必须在我的 php.ini 中启用 "oci8-extensions"。
但是我当前的 xampp 在 php/ext
文件夹中没有这些 dll(只有一个 php_oci8_12c.dll
会在 apache 启动时抛出几个未知函数的错误,并且是针对 oracle 12 而不是 11)和php.ini 还说只有即时客户端才需要它们。
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
此外,这个 SO-questions 表明在普通客户端上使用评论扩展将不起作用(我也试过了)。
我试图 google 寻求解决方案,但所有 "solutions" 都是 "install win32 instant client and enable extension"。但我不能这样做,因为我的大部分 QA 工作都需要安装和配置 11.2.0-client,而且我的 php/ext-folder 中没有 .dll 无论如何
我还尝试将 ociw32.dll 从 client/bin 文件夹复制到 php/ext-folder 但后来 apache 说它不是 PHP 库。
那么如何启用 PHP oracle 库以在 x64 win7 XAMPP 上使用 oci8 WITHOUT 安装 win32 Oracle Instant Client 并破坏我当前的设置?
编辑:我还尝试了 in the PHP: Installation Manual (Post of: samantha dot vincent at gmail dot com) 中描述的步骤,包括更改我的 apache-http.conf,但也没有帮助。
我也对我的 phpinfo()
-输出感到困惑
Configure Command "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared"
我终于找到了解决办法:
我从 "PECL :: PAckage :: oci8 :: 2.0.8" 下载了实际的 OCI-DLL(在我的例子中是 32 位线程安全 DLL),然后从这一行
中删除了 ;
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
我还在我的 http.conf of apache
中添加了以下行
SetEnv ORACLE_BASE "C:/oracle/"
SetEnv ORACLE_HOME "C:/oracle/product/11.2.0/client_1"
之后我重新启动了 apache,确保我的连接别名可能放在我的 tsnames.ora
中,然后我可以使用 oci8 函数而不会出现任何问题。
- https://pecl.php.net/package/oci8/2.2.0/windows SELECT -> 32 位的 7.3 线程安全 (TS) x86 或 64 位的 7.3 线程安全 (TS) x64
- 提取所有文件并复制到 de C:\xampp\php\ext
- 打开php.ini文件并写入:extension=php_oci8.dll
- 重启xampp。检查您的浏览器 http://localhost/dashboard/phpinfo.php 是否启用了 oci8(如果未出现)。从互联网下载并将 oci8.dll 复制到 c:\windows\system32 文件夹中。
- 重启xampp
- 检查您的浏览器 http://localhost/dashboard/phpinfo.php 是否启用了 oci8。完成!!
我刚刚在我的 win7 (x64) PC 上安装了一个 acutal XAMPP 来编写一些 PHP 脚本来连接到 oracle 数据库。我还安装了一个普通的 oracle 11.2.0 客户端(PATH 和 ORACLE_HOME 设置正确)。客户端用于我的所有其他工作,没有任何问题。
当我尝试连接到 Oracle 数据库时 PHP 失败并显示 Fatal error: Call to undefined function oci_connect() in
。我记得几年前我在 x32 winXP PC 上做同样的事情时,我必须在我的 php.ini 中启用 "oci8-extensions"。
但是我当前的 xampp 在 php/ext
文件夹中没有这些 dll(只有一个 php_oci8_12c.dll
会在 apache 启动时抛出几个未知函数的错误,并且是针对 oracle 12 而不是 11)和php.ini 还说只有即时客户端才需要它们。
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
此外,这个 SO-questions 表明在普通客户端上使用评论扩展将不起作用(我也试过了)。
我试图 google 寻求解决方案,但所有 "solutions" 都是 "install win32 instant client and enable extension"。但我不能这样做,因为我的大部分 QA 工作都需要安装和配置 11.2.0-client,而且我的 php/ext-folder 中没有 .dll 无论如何
我还尝试将 ociw32.dll 从 client/bin 文件夹复制到 php/ext-folder 但后来 apache 说它不是 PHP 库。
那么如何启用 PHP oracle 库以在 x64 win7 XAMPP 上使用 oci8 WITHOUT 安装 win32 Oracle Instant Client 并破坏我当前的设置?
编辑:我还尝试了 in the PHP: Installation Manual (Post of: samantha dot vincent at gmail dot com) 中描述的步骤,包括更改我的 apache-http.conf,但也没有帮助。
我也对我的 phpinfo()
-输出感到困惑
Configure Command "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared"
我终于找到了解决办法:
我从 "PECL :: PAckage :: oci8 :: 2.0.8" 下载了实际的 OCI-DLL(在我的例子中是 32 位线程安全 DLL),然后从这一行
中删除了;
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
我还在我的 http.conf of apache
中添加了以下行SetEnv ORACLE_BASE "C:/oracle/"
SetEnv ORACLE_HOME "C:/oracle/product/11.2.0/client_1"
之后我重新启动了 apache,确保我的连接别名可能放在我的 tsnames.ora
中,然后我可以使用 oci8 函数而不会出现任何问题。
- https://pecl.php.net/package/oci8/2.2.0/windows SELECT -> 32 位的 7.3 线程安全 (TS) x86 或 64 位的 7.3 线程安全 (TS) x64
- 提取所有文件并复制到 de C:\xampp\php\ext
- 打开php.ini文件并写入:extension=php_oci8.dll
- 重启xampp。检查您的浏览器 http://localhost/dashboard/phpinfo.php 是否启用了 oci8(如果未出现)。从互联网下载并将 oci8.dll 复制到 c:\windows\system32 文件夹中。
- 重启xampp
- 检查您的浏览器 http://localhost/dashboard/phpinfo.php 是否启用了 oci8。完成!!