Mac使用pecl安装grpc报错:Warning:mkdir():File exists in System.php

2023-05-16

Mac使用pecl安装grpc报错:Warning:mkdir():File exists in System.php on line 294

问题描述

Mac 使用 pecl 安装PHP扩展 grpc, 报错:
Warning: mkdir(): File exists in System.php on line 294
PHP Warning: mkdir(): File exists in /usr/local/Cellar/php/7.3.11/share/php/pear/System.php on line 294
Warning: mkdir(): File exists in /usr/local/Cellar/php/7.3.11/share/php/pear/System.php on line 294
ERROR: failed to mkdir /usr/local/Cellar/php/7.3.11/pecl/20180731

查看当前环境状态

查看当前 PHP 版本:

$ php -v
PHP 7.3.11 (cli) (built: Oct 24 2019 11:29:00) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies
  with Zend OPcache v7.3.11, Copyright (c) 1999-2018, by Zend Technologies

查看 php 命令位置:

$ which php
/usr/local/bin/php

$ ls -l /usr/local/bin/php
lrwxr-xr-x  1 wangtom admin 28 10 28 2019 /usr/local/bin/php -> ../Cellar/php/7.3.11/bin/php

可以看到 php 是通过 brew 安装的,因为 brew 安装的库都在 /usr/local/Cellar/ 目录下面。

执行安装报错:

$ sudo pecl install grpc
Starting to download grpc-1.29.1.tgz (3,382,883 bytes)
... (略) ...

Build process completed successfully
Installing '/usr/local/Cellar/php/7.3.11/pecl/20180731/grpc.so'

Warning: mkdir(): File exists in System.php on line 294
PHP Warning:  mkdir(): File exists in /usr/local/Cellar/php/7.3.11/share/php/pear/System.php on line 294

Warning: mkdir(): File exists in /usr/local/Cellar/php/7.3.11/share/php/pear/System.php on line 294
ERROR: failed to mkdir /usr/local/Cellar/php/7.3.11/pecl/20180731

提示编译成功,但是并未找到 grpc.so 文件。

网上一查,有一篇 《记一次mac安装swoole的坑》中提供的方法竟然是 “解决方法:放弃。。。”。 哈哈。

另一篇《Mac 通过pecl安装php扩展(swore)报错》 提问中,韩天峰回答“只是头文件安装失败,不影响使用。”。

都不可以,自己再想想办法吧。

解决办法:

再次查看 Cellar/php/7.3.11/ 目录:

$ ls -l /usr/local/Cellar/php/7.3.11/ 
total 176
-rw-r--r--   1 wangtom  staff   3140 10 28  2019 INSTALL_RECEIPT.json
-rw-r--r--   1 wangtom  staff   3204 10 22  2019 LICENSE
-rw-r--r--   1 wangtom  staff  72744 10 22  2019 NEWS
-rw-r--r--   1 wangtom  staff   1609 10 22  2019 README.md
drwxr-xr-x  12 wangtom  staff    384 10 28  2019 bin
-rw-r--r--   1 wangtom  staff    628 10 28  2019 homebrew.mxcl.php.plist
drwxr-xr-x   3 wangtom  staff     96 10 22  2019 include
drwxr-xr-x   4 wangtom  staff    128 10 22  2019 lib
lrwxr-xr-x   1 wangtom  staff     23 10 28  2019 pecl -> /usr/local/lib/php/pecl
drwxr-xr-x   3 wangtom  staff     96 10 22  2019 sbin
drwxr-xr-x   4 wangtom  staff    128 10 22  2019 share

既然程序自己创建目录失败,那我就提前帮他创建好,再重新执行是不是就好了?

开始提前创建 20180731/ 目录:

$ sudo mkdir -p /usr/local/Cellar/php/7.3.11/pecl/20180731/ 
mkdir: /usr/local/Cellar/php/7.3.11/pecl/20180731/: Not a directory

但是报错,目录不存在,奇怪了。使用 ls -l 命令查看整个Cellar/php/7.3.11目录:

$ cd /usr/local/Cellar/php/7.3.11
$ ls -l
total 176
-rw-r--r--   1 wangtom  staff   3.1K 10 28  2019 INSTALL_RECEIPT.json
-rw-r--r--   1 wangtom  staff   3.1K 10 22  2019 LICENSE
-rw-r--r--   1 wangtom  staff    71K 10 22  2019 NEWS
-rw-r--r--   1 wangtom  staff   1.6K 10 22  2019 README.md
drwxr-xr-x  12 wangtom  staff   384B 10 28  2019 bin
-rw-r--r--   1 wangtom  staff   628B 10 28  2019 homebrew.mxcl.php.plist
drwxr-xr-x   3 wangtom  staff    96B 10 22  2019 include
drwxr-xr-x   4 wangtom  staff   128B 10 22  2019 lib
lrwxr-xr-x   1 wangtom  staff    23B 10 28  2019 pecl -> /usr/local/lib/php/pecl
drwxr-xr-x   3 wangtom  staff    96B 10 22  2019 sbin
drwxr-xr-x   4 wangtom  staff   128B 10 22  2019 share

可以到 pecl 目录是个软连接。

/usr/local/Cellar/php/7.3.11/pecl 链接到了 /usr/local/lib/php/pecl 目录

那就在 /usr/local/lib/php/pecl 目录中创建 20180731 目录,并赋给所有的执行权限,看看会不会成功。

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

重新再执行 pecl install grpc 进行安装:

$ sudo pecl install grpc
Starting to download grpc-1.29.1.tgz (3,382,883 bytes)
1565 source files, building
running: phpize
Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731
... (略) ...
Build process completed successfully
Installing '/usr/local/Cellar/php/7.3.11/pecl/20180731/grpc.so'
install ok: channel://pecl.php.net/grpc-1.29.1
Extension grpc enabled in php.ini

这次成功了。

查看编译的 grpc.so 文件,存在。

$ ls /usr/local/Cellar/php/7.3.11/pecl/20180731/
grpc.so

使用 php -m 命令查看 grpc 扩展是否安装成功?

$ php -m |grep grpc
grpc

可以看到,扩展存在,安装成功。

其他解决办法:

(1) 源码编译安装: 自己下载 PHP 的 grpc 扩展源码,使用 phpize 编译安装。
(2) 可以换个 Linux 系统试试,推荐 Ubuntu。

后来又看到一篇 《PHP安装扩展时抛出/usr/local/Cellar/php@7.1/7.1.25/pecl异常解决》,他是通过修改 php-config,将 Cellar 目录 pecl 改成别的目录:

// 中的 『pecl』 换成 『lib』
// 修改前
extension_dir='/usr/local/Cellar/php@7.1/7.1.25/pecl/20160303' 
// 修改后
extension_dir='/usr/local/Cellar/php@7.1/7.1.25/lib/php/20160303'

和本人解决方法类似,提示不能创建这个目录,本人是强制让给它创建好这个目录,这个作者是换一个新目录创建后重新编译。

参考链接

https://www.php.net/manual/zh/install.pecl.phpize.php
http://www.botark.com/articles/19 (无效)
https://segmentfault.com/q/1010000019298398/a-1020000019400977 (无效)
https://www.cnblogs.com/liugx/p/11061670.html

[END]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mac使用pecl安装grpc报错:Warning:mkdir():File exists in System.php 的相关文章

  • grpc/protobuffer 请求特定字段

    GraphQL 允许您请求特定字段 响应仅包含您请求的字段 例如 graphql 查询如下 hero name 将返回 data hero name R2 D2 作为 graphQl 查询 例如 hero name friends name
  • Grpc Client 抛出 Grpc.Core.RpcException (响应协议降级为 HTTP/1.1。)

    我度过了最后三天 阅读焦点 尝试不同版本的 VS 和 NET 检查 Stackoverflow 中的问题 github 中的问题 关于我的 Grpc 客户端 服务器启动正常但客户端无法工作 我尝试过Grpcurl 工作正常 but C 客户
  • C# gRPC 客户端拦截器设置授权标头

    我正在尝试为 gRPC 客户端创建一个拦截器 始终设置配置的 API 令牌 问题是我找不到设置的方法context Options Headers 如果我正在阅读文档 我需要致电WithHeaders方法 需要设置新的元数据 以便我可以添加
  • XXX_* 输入生成的 *.pb.go 文件

    我正在研究一个tutorial https ewanvalentine io microservices in golang part 1 关于 gRPC 当我生成 pb go文件 我得到一些XXX 输入我的结构 这是我的consignme
  • 是否可以在 HipHop 中使用 PECL 扩展?

    我有一个使用rabbit mq代理的应用程序 我有用php编写的消费者并使用这个扩展http pecl php net package amqp http pecl php net package amqp 我想使用 hiphop 编译这些
  • sudo pecl 在 os x lion 上安装 apc 错误

    我尝试在 OS X Lion 上使用 pecl 安装 APC sudo pecl install apc 并且它抱怨缺少 pcre h 文件 In file included from private tmp pear temp APC a
  • 如何解决grpc Deadline Exceeded错误?

    我有用go和python客户端编写的grpc服务器 有时会出现如下错误 eggs grpcio 1 0 0 py2 7 linux x86 64 egg grpc channel py line 432 in end unary respo
  • mkdir() 不工作

    My code mkdir some absolute path 0777 and mkdir relative path 0777 不起作用 安全模式已关闭 我什至尝试将所有父文件夹设置为 777 有任何想法吗 编辑 我确实打开了错误报告
  • 使用 vcpkg 编译 gRPC C++ 示例

    我正在尝试使用与 vcpkg 管理器一起安装的 grpc 来构建和运行 grpc 示例 我通过克隆并查找 grpc 安装了 vcpkg 管理器 如下所示 sudo apt get install y unzip build essentia
  • 如何对子目录内的服务进行 GRPC 调用? (在.Net框架中)

    我正在尝试连接到 NetFramework 4 5 Windows 应用程序中的 gRPC 服务 我目前正在使用元包 nuget Grpc 我知道它现在仅处于维护模式 我需要访问不在主机 端口位置但有子路径 子目录的服务 我的服务位于这里
  • GRPC - .IllegalArgumentException:Jetty ALPN/NPN 尚未正确配置

    我正在尝试在 pod 上的 docker 容器中启用 TLS 来启动 GRPC 服务器 但在服务器启动期间出现以下错误 我正在尝试参考https github com grpc grpc java blob master SECURITY
  • NodeJs 错误 - 无法加载 gRPC 二进制模块,因为未为当前系统安装预期目录?

    我正在运行我的 NodeJs 应用程序 但收到错误 sudo usr local bin node app js Error Failed to load gRPC binary module because it was not inst
  • 软件包“pecl.php.net/intl”没有可用的版本

    我正在尝试为 php 安装 intl 当我跑步时sudo pecl install intl它给了我一个错误No releases available for package pecl php net intl 我尝试过清除缓存 也尝试过升
  • PHP mkdir 问题!

    我尝试创建一些像这样的目录 mkdir photos cat sku 0777 true 它使用 0777 权限创建第一个目录 但在创建第二个目录时使用 000 作为其权限 因此无法创建第三个目录 请问有解决方法吗 谢谢 理查德 这解决了这
  • Android File.exists() 不区分大小写吗?

    我创建了一个新文件夹 sdcard dd by File album new File albumPath if album exists Log d TAG albumPath already exists else boolean bF
  • GRPC:客户端超时

    我正在尝试让客户端在超时的情况下工作 为此 我修改了 async greeter server cpp 和 async greeter client cpp 文件来测试这个概念 我在客户端 在客户端上下文上 设置截止日期 如果超时 我会等待
  • 干预/图像需要文件信息

    我在干预 图像方面遇到问题 Laravel composer install intervention image 2 1 1 requires ext fileinfo gt the requested PHP extension fil
  • grpc找不到protobuf库

    我检查了 grpc 安装并完成了构建和安装 现在当我尝试 find package gRPC CONFIG REQUIRED I get CMake Error at CMakeLists txt 15 find package Found
  • gRPC(HTTP/2) 比使用 HTTP/2 的 REST 更快吗?

    目标是引入一种性能更好的传输和应用层协议latency and 网络吞吐量 目前 该应用程序使用REST with HTTP 1 1并且我们遇到了很高的延迟 我需要解决这个延迟问题并且我愿意使用gRPC HTTP 2 or 休息 HTTP2
  • 在 grpc python 中处理异步流请求

    我试图了解如何使用双向流处理 grpc api 使用 Python API 假设我有以下简单的服务器定义 syntax proto3 package simple service TestService rpc Translate stre

随机推荐