OS X Monterey PHP 8.1 无法找到 oci8.so

问题描述 投票:0回答:1

我从 https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html下载并安装了 Oracle InstantClient,并通过 OS X Monterey 的说明进行安装。

然后我运行

arch -arm64e pecl install oci8-3.2.1
以获得正确版本的
oci8
与 php 8.1 & Silicon 一起使用,它报告它已安装
oci8
扩展并添加
so
文件。

但是,当我运行

php -a
时,首先弹出的是找不到
oci8.so

tried: /opt/homebrew/lib/php/pecl/20210902/oci8.so
(dlopen(/opt/homebrew/lib/php/pecl/20210902/oci8.so, 0x0009): 
symbol not found in flat namespace (_OCIAttrGet))

oci8.so
文件存在于该位置 - 我尝试重新安装 php 8.1 和 oci 扩展,但仍然遇到相同的错误。感谢您的帮助!

php oci8 php-8.1 instantclient
1个回答
1
投票

整理出来了。供将来参考:所有难题(Oracle、brew、php、oci8)都需要针对 Intel 进行专门设置:

下载适用于 OS X (Intel) 的 Oracle InstantClient dmg 并按照 Oracle 下载页面上的文档进行安装,然后:

  1. 复制终端应用程序,选项-I 并设置为“使用 Rosetta 打开”
  2. 在 Rosetta 终端中,安装 Homebrew:
    arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  3. 安装[电子邮件受保护]
    arch -x86_64 /usr/local/Homebrew/bin/brew [re]install [email protected]
  4. 将 x86_64 [email protected] 添加到您的 shell
    $PATH
  5. 安装x86_64
    oci8
    arch -x86_64 pecl install oci8-3.2.1
  6. 出现提示时添加
    instantclient,[/full/path/to/installed/instantclient/directory]
  7. 如果安装
    extension=oci8.so
    后未自动添加,请将
    php.ini
    添加到
    PECL
    ,并根据需要添加
    extension_dir
  8. php -a
    将返回
    function_exists('oci_connect')
    作为
    true

请注意,上述内容仅为 cli 安装 InstantClient - 如果您想使用 Intel PHP 运行服务器,则需要额外的配置;该信息位于 php 安装步骤的输出中。

© www.soinside.com 2019 - 2024. All rights reserved.