php - MAMP:PHP -m 显示已启用 oci8,但在 phpinfo 中未显示

标签 php oracle mamp oracle-call-interface

我的目标是通过 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 日志(确保您启用了 PHP 来记录所有错误!只需转到您的 error_log 路径来查找您的错误),我发现了以下内容:

[06-May-2016 09:48:12 Europe/Berlin] PHP Warning: PHP Startup: Unable to load dynamic library '/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): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1

[09-May-2016 04:53:51 Europe/Berlin] PHP Warning: PHP Startup: Unable to load dynamic library '/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): Library not loaded: /ade/dosulliv_ldapmac/oracle/ldap/lib/libnnz11.dylib

因此 oci8.so 未加载,因为有两个库未加载。

这是我修复它的方法:

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

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 上找到该信息。

My PHPInfo OCI8

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

关于php - MAMP:PHP -m 显示已启用 oci8,但在 phpinfo 中未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37090380/

相关文章:

PHP 无法在服务器上运行

php - 拉拉维尔 5.3。生产环境如何配置?

oracle - 如何捕获 Oracle 异常 "ORA-06535: statement string in OPEN is NULL or 0 length"?

sql - 按月排序

phpmyadmin - 在mamp中导出mysql-不允许我将文件另存为sql?

php - $_POST 接收要更新的动态字段数量

sql - 无法删除程序

mysql - 在 MAMP 堆栈上运行的 CodeIgniter 中没有选择数据库错误

php - 在同一页面上将用户输入显示为评论

php - PDO,错误更新依旧没有异常