【问题标题】:How to use oracle client 11.2 with php (xampp) on win7 x64如何在win7 x64上使用带有php(xampp)的oracle客户端11.2
【发布时间】:2015-03-02 16:25:27
【问题描述】:

我刚刚在我的 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 表明在普通客户端上使用评论扩展将不起作用(我也尝试过)。

我试图用谷歌搜索解决方案,但所有“解决方案”都是“安装 win32 即时客户端并启用扩展”。但我不能这样做,因为我的大部分 QA 工作都需要安装和配置的 11.2.0-client,而且我的 php/ext 文件夹中没有 .dll

我还尝试将 ociw32.dll 从 client/bin 文件夹复制到 php/ext 文件夹,但 apache 说它不是 PHP 库。

那么我怎样才能让 PHP oracle 库在 x64 win7 上使用 oci8 for XAMPP 安装 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"

【问题讨论】:

    标签: php oracle apache oracle11g oracleclient


    【解决方案1】:

    我终于找到了解决办法:

    我从 "PECL :: PAckage :: oci8 :: 2.0.8" 下载了实际的 OCI-DLL(在我的情况下是 32 位线程安全 DLL),然后从这一行中删除了 ;

    ;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client
    

    我还在 apache 的 http.conf 中添加了以下几行

    SetEnv ORACLE_BASE "C:/oracle/"
    SetEnv ORACLE_HOME "C:/oracle/product/11.2.0/client_1"  
    

    之后我重新启动 apache,确保我的连接别名可能放在我的 tsnames.ora 中,然后我可以使用 oci8 函数而不会出现任何问题。

    【讨论】:

    • @bish,你能告诉我你把下载的文件放在哪里了吗?
    • 在您的php/bin-目录中。
    • 与你下载的没有更改http.conf,本教程:XAMMP | ORACLE |和PHP.NET
    • 您好,我想知道 'SetEnv ORACLE_BASE "C:/oracle/"' 有什么作用?这是 Oracle 客户端而不是 Instant 客户端吗?
    • 我使用的是普通的 Oracle 客户端,而不是问题中所说的即时客户端
    【解决方案2】:
    1. https://pecl.php.net/package/oci8/2.2.0/windows SELECT -> 32 位的 7.3 线程安全 (TS) x86 或 64 位的 7.3 线程安全 (TS) x64
    2. 提取所有文件并复制到 de C:\xampp\php\ext
    3. 打开 php.ini 文件并写入:extension=php_oci8.dll
    4. 重新启动 xampp。检查您的浏览器http://localhost/dashboard/phpinfo.php 是否启用了 oci8 如果没有出现。从 Internet 下载并将 oci8.dll 复制到 c:\windows\system32 文件夹中。
    5. 重启xampp
    6. 如果启用了 oci8,请检查您的浏览器 http://localhost/dashboard/phpinfo.php。完成!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 2017-12-12
      相关资源
      最近更新 更多