我从 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 扩展,但仍然遇到相同的错误。感谢您的帮助!
整理出来了。供将来参考:所有难题(Oracle、brew、php、oci8)都需要针对 Intel 进行专门设置:
下载适用于 OS X (Intel) 的 Oracle InstantClient dmg 并按照 Oracle 下载页面上的文档进行安装,然后:
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
arch -x86_64 /usr/local/Homebrew/bin/brew [re]install [email protected]
$PATH
oci8
:arch -x86_64 pecl install oci8-3.2.1
instantclient,[/full/path/to/installed/instantclient/directory]
extension=oci8.so
后未自动添加,请将 php.ini
添加到 PECL
,并根据需要添加 extension_dir
php -a
将返回 function_exists('oci_connect')
作为 true
请注意,上述内容仅为 cli 安装 InstantClient - 如果您想使用 Intel PHP 运行服务器,则需要额外的配置;该信息位于 php 安装步骤的输出中。