首页 > 解决方案 > oci8.so 中的代码签名在 Macos Mojave 中启用 SIP 时无效

问题描述

我在 Macos Mojave 上通过 PECL 安装了 oci8,用于 PHP 并且一切正常,直到我再次启用 SIP。现在,当我尝试使用 oci8 时出现以下错误:

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib/php/extensions/no-debug-non-zts-20160303/oci8.so' - dlopen(/usr/lib/php/extensions/no-debug -non-zts-20160303/oci8.so,0x0009):(/usr/lib/php/extensions/no-debug-non-zts-20160303/oci8.so)中的代码签名在进程中使用无效:映射文件没有cdhash,完全没有签名?代码必须至少是临时签名的。在第 0 行的未知中

我用谷歌搜索了我的眼睛,但我能找到的唯一“提示”是禁用 Apache 和 PHP 并通过 brew 再次安装它们。好吧,这不是一个选择。我还发现其他人只是用 codesign 签署了 dylib。但这是一个.so,我不知道它是否可以被代码签名。此外,我没有 Apple Developer 帐户,因此codesign -s MyID无法使用,AFAIK。

所以我的问题是:有人对我的问题有一个优雅的解决方案吗?

我正在运行 Macos 10.14.6、PHP 7.1,并重新安装了 PEAR 和 PECL 版本、Xcode、/usr/include 中的 Xcode 标头(用于 PECL)、/opt/oracle/instantclient_19_3/ 中的 Oracle。

提前致谢!

标签: phporaclecode-signingpecloci8

解决方案


将 Instant Client 库放入~/lib/usr/local/lib. 你可能需要做后者。请参阅https://oracle.github.io/node-oracledb/INSTALL.html#instosx中的 3.5.4


推荐阅读