【问题标题】:Install grpc extension on Mac OS Big Sur在 Mac OS Big Sur 上安装 grpc 扩展
【发布时间】:2021-03-04 01:15:50
【问题描述】:

现在两天,我正在尝试在我的 Mac mini 服务器上安装 grpc for php

  • Mac OS Big Sur 11.2.1
  • 内置 Apache
  • 我已经在使用 homebrew 安装的 php 7.3 和 7.4 上尝试过

经过多次尝试,我已经安装了 grpc pecl grpc install,我终于用 pecl 编译并安装了它。

扩展名被放置在好的库中。但我遇到签名问题。 php -m 在列表中显示 grpc 但不显示 php_info()

PHP 警告:PHP 启动:无法加载动态库 'grpc.so'(已尝试:/usr/local/lib/php/pecl/20190902/grpc.so (dlopen(/usr/local/lib /php/pecl/20190902/grpc.so, 9): 没有找到合适的图像。确实找到了:\n\t/usr/local/lib/php/pecl/20190902/grpc.so: (/usr/ 中的代码签名local/lib/php/pecl/20190902/grpc.so) 在使用库验证的进程中使用无效:映射进程是平台二进制文件,但映射文件不是\n\t/usr/local/lib/php/pecl /20190902/grpc.so:stat() 失败,errno=1),/usr/local/lib/php/pecl/20190902/grpc.so.so (dlopen(/usr/local/lib/php/pecl/20190902 /grpc.so.so, 9): image not found)) in Unknown on line 0

  1. 我已禁用 SIP。还是同样的问题。
  2. 我已经用我的苹果开发者 ID 对扩展进行了代码签名。 codesign -f -s "Mac Developer: MY_DEV_ID" /usr/local/lib/php/pecl/20190902/grpc.so 同样的问题
  3. 我有xattr /usr/local/lib/php/pecl/20190902/grpc.so 然后sudo xattr -d com.apple.quarantine /usr/local/lib/php/pecl/20190902/grpc.so
  4. 我也尝试禁用网守。

仍然是同样的问题。有没有人用 Big Sur 在 Mac 上成功安装了 grpc,谁知道出了什么问题?

【问题讨论】:

  • 请注意,如果在后台使用 Network.framework,由于缺少 ALPN 支持,macOS 不支持 HTTP/2 over TLS(由 gRPC 使用)。不确定这是否与您的问题有关。

标签: macos grpc


【解决方案1】:

我也遇到了同样的情况,试了好几次安装都解决了。

在我跑步时

sudo pecl grpc install

安装过程中出现错误,错误信息如

ERROR: failed to mkdir /usr/local/Cellar/php@7.4/7.4.15/pecl/20190902

见图: running pecl grpc install

问题是安装过程无法为/usr/local/Cellar/php@7.4/7.4.15/pecl/20190902创建新目录,所以我尝试先通过运行命令创建该目录:

mkdir /usr/local/Cellar/php@7.4/7.4.15/pecl/

然后再次运行安装过程,它成功了!

【讨论】:

    【解决方案2】:

    1.查看 Cellar/php/... 目录:

    对我来说:

    给你:

    ls -la /usr/local/Cellar/php/YOUR_PHP_VERSION/
    

    2。查看目录“pecl”,这是一个链接:

    3.检查链接:

    ls -la /usr/local/lib/php/pecl
    

    如果:

    没有这样的文件或目录

    执行:

    mkdir -p /usr/local/lib/php/pecl
    
    sudo chmod 777 /usr/local/lib/php/pecl/
    

    4.重新安装扩展:

    pecl install grpc
    

    【讨论】: