【问题标题】:MAMP: PHP -m shows oci8 enabled, but not in phpinfoMAMP:PHP -m 显示启用了 oci8,但不在 phpinfo 中
【发布时间】:2016-05-07 15:34:33
【问题描述】:

我的目标是通过 OCI8 连接到 Oracle 数据库,可通过以下方式获得:

pecl install oci8-2.0.11

为了实现这一点,我一直在关注网络上的各种教程以使其发挥作用。

我遵循了以下教程:

  1. http://www.baldwhiteguy.co.nz/technical/index_files/mac-osx-oracle-instantclient.html
  2. http://www.enavigo.com/2012/01/04/enabling-oracle-oci8-php-extension-on-os-x-snow-leopard/
  3. http://tomytree22.blogspot.my/2014/09/oci-driver-installation-on-mac.html

这些教程足以运行 SQL Plus。我还能够成功运行 pecl install oci-8.20.11 并获得以下输出:

You should add "extension=oci8.so" to php.ini

在我上面列出的第三个教程中,除了 instantclient 库有一些我们需要处理的硬编码路径之外,我都遵循了所有这些:

当我运行 php -m 时,我可以看到 oci8 在那里,但我没有在我的 phpinfo 中看到它。我做错了什么?

当我尝试连接到 Oracle 数据库时,我遇到了这个问题:

Fatal error: Call to undefined function oci_connect()

我希望这里有人可以帮助我。我正在使用 El Capitan。

【问题讨论】:

  • 我猜这可能会导致冲突。你是如何安装 PHP 的?您使用的是哪个版本的 Oracle DB,它位于何处?
  • @FiidoFirdauz 可能会引起冲突?你是什​​么意思?我正在使用 Oracle Instant Client。我正在使用 MAMP 进行开发 (PHP 5.6.10)。
  • 首先检查您在 php 64/32 位上运行的代码。如果 PHP 是 32 位,则需要使用 32 位 Oracle 库
  • @FiidoFirdauz 我的 PHP 是 64 位的。是的,我也在使用 64 位 Oracle 库。

标签: php oracle mamp oracle-call-interface


【解决方案1】:

所以我修好了。这是我解决问题的方法。

我查看了我的 php 日志(确保您启用了 PHP 来记录所有错误!只需转到您的 error_log 路径来查找您的错误),我发现了这个:

[06-May-2016 09:48:12 Europe/Berlin] PHP 警告:PHP 启动:无法加载动态库 '/Applications/MAMP/bin/php/php5.6.10/lib/php/extensions/no -debug-non-zts-20131226/oci8.so' -dlopen(/Applications/MAMP/bin/php/php5.6.10/lib/php/extensions/no-debug-non-zts-20131226/oci8.so, 9 ): 库未加载:/ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1

[09-May-2016 04:53:51 Europe/Berlin] PHP 警告:PHP 启动:无法加载动态库 '/Applications/MAMP/bin/php/php5.6.10/lib/php/extensions/no -debug-non-zts-20131226/oci8.so' -dlopen(/Applications/MAMP/bin/php/php5.6.10/lib/php/extensions/no-debug-non-zts-20131226/oci8.so, 9 ): 库未加载:/ade/dosulliv_ldapmac/oracle/ldap/lib/libnnz11.dylib

所以 oci8.so 没有加载,因为有两个库没有加载。

这是我修复它的方法:

这意味着,我跳过的 instantclient 库有一些我们需要处理的硬编码路径: 是我需要的。所以我运行这些命令(从教程中复制粘贴):

sudo mkdir -p /ade/b/3071542110/oracle/rdbms/lib/
sudo ln -sf /Applications/MAMP/bin/php/php5.5.10/lib/php/instantclient_11_2/libclntsh.dylib.11.1 /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1
sudo mkdir -p /ade/dosulliv_ldapmac/oracle/ldap/lib/
sudo ln -sf /Applications/MAMP/bin/php/php5.5.10/lib/php/instantclient_11_2/libnnz11.dylib /ade/dosulliv_ldapmac/oracle/ldap/lib/libnnz11.dylib

然后我重新启动了我的 MAMP。现在我得到了我想要的,那就是 OCI8。现在该信息在我的 PHPInfo 上可用。

希望这将帮助正在走上设置 OCI 以在 MAMP 上连接到 Oracle 的相同路径的其他人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-21
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多