【问题标题】:Installing gRPC for localhost为本地主机安装 gRPC
【发布时间】:2018-10-17 18:22:25
【问题描述】:

我正在使用Google Cloud Firestore 的 PHP 库,它需要我安装并启用 gRPC extension.. 我已经阅读了指南,上面写着

Windows 用户可以从PECL 下载和启用 DLL。支持 Windows 是实验性的

PECL 站点中,我可以看到许多指向tgzDLL 文件的链接,但没有任何说明如何在XAMPP 中作为本地主机使用或激活它们

【问题讨论】:

    标签: xampp google-cloud-firestore grpc


    【解决方案1】:

    this link..的帮助下,我发现这些步骤会激活gRPC

    1. 来自PECL 站点(或具有完全相同文件的windows.php.net).. 选择最新稳定版本的DLL

    2. 根据你的PHP版本:

      • 对于带有 PHP > 7.2.15 的 XAMPP .. 选择 Thread Safe (TS) x64

      • 对于较旧的 XAMPP .. 选择 Thread Safe (TS) x86

    3. 下载 ZIP 文件,然后提取其内容

    4. php_grpc.dll文件复制到XAMPP中的extensions文件夹(你可以在php.ini中找到路径)..在我的例子中是extension_dir="C:\xampp\php\ext"
    5. 在您的 php.ini 文件中启用扩展:

      • 对于 PHP 7.2 版 及更高版本.. 添加extension=grpc

      • 对于旧 PHP .. 添加extension=php_grpc.dll

    6. 重启XAMPP,扩展将被激活,如phpinfo()所示

    【讨论】:

    • 我知道这是旧的,但我正在尝试做同样的事情,但我似乎找不到任何 php_grpc.dll 文件或任何你能提供更多信息的信息吗?
    • @Innervisions 您可以在您下载的 ZIP 内容中找到php_grpc.dll 文件。我已更新答案以使其更清晰
    • 我按照你说的做了一切,但我仍然没有看到它,我非常讨厌这个扩展......
    • 我需要下载不是DLL的其他rar吗?如果我这样做,我应该把它放在哪里?
    • 按照指示,我下载了php_grpc-1.37.0-7.3-ts-vc15-x64,解压后将.dll文件复制到php/ext文件夹,在php.ini中添加extension=php_grpc文件,重新启动xampp,它工作正常。我在 Windows 10 操作系统上使用 PHP 7.3.9。
    【解决方案2】:

    Windows 10 | PHP 7.1

    我尝试调试了 4 个小时,但找不到正确的解决方案。后来我意识到除了 grpc 扩展之外,还有一些其他扩展也像 oci 当我试图取消注释这些(同时保持 grpc 注释)并运行任何 php 命令(如 php --ini

    在其他一些论坛上,我读到用户必须使用 Windows 安装程序手动安装 PHP,然后安装 DLL。我想我会尝试,但我找不到 MSI,所以我从 https://windows.php.net/download/ 下载了最新的 PHP zip 安装程序,我选择了 php 7.1 的 x64 版本。

    请注意,我没有安装这个下载的 PHP,但我注意到它有一个 php7.dll 我曾使用 http://www.dependencywalker.com/ 的依赖项walker 来检查 php_grpc.dll 的依赖项,并发现 php7.dll 作为依赖项。

    所以我所做的是将 PHP7.dll 和 php_grpc.dll 复制到 system32,然后我尝试安装该 DLL。我以管理员身份运行命令提示符并导航到 C:\windows\system32 并执行命令 regsvr32 php_grpc.dll (请注意,如果没有 PHP7.dll 存在于同一文件夹中,这将不起作用 - 或者至少它不起作用为了我)。执行后,我收到一条消息,指出 DLL 已加载但未找到入口点。这时,当我再次执行 php --ini 时(我也将 php_grpc.dll 加载到 XAMPP php 文件夹下的 ext 文件夹中),我终于收到了一个新错误,提示正在加载的模块是非线程安全的(NTS),而 PHP是 TS(线程安全)。所以我去了PECL,下载了php7.1的grpc插件的TS版本,并将dll文件粘贴到system32和ext文件夹中。我运行了 regsvr32 /U php_grpc.dll 命令,它卸载并重新安装了我相信的 DLL(我不确定这一步是否有任何区别,但我在这里提到它,因为我在调用 php --ini 之前已经执行了这一步)

    在此之后,最后 php --ini 运行没有任何问题。我能够使用 composer 命令成功下载 cloud-firestore 的依赖项。浪费了 4 个宝贵的时间,但我希望这对其他人有所帮助。

    注意:我没有从 PECL 下载,而是从 https://windows.php.net/downloads/pecl/releases/grpc/ 下载了 grpc zip

    我不知道这是否不同,但它是安装站点上提到的用于 Windows 安装 PHP 的链接。还有其他人在这里有这个链接。在这篇文章的时候,我采用了最新的版本 1.24.0。我选择了线程安全版本。

    我选择线程安全版本的原因是因为我收到了版本不匹配的错误。您还可以通过在控制台中执行“php -i”来检查您的版本,它返回与 phpinfo() 相同的信息;将输出复制并粘贴到一些文本编辑器中,然后搜索 PHP Extension Build。以下是我看到的

    PHP 扩展构建 => API20160303,TS,VC14

    注意,它是 TS 又名线程安全的。因此,与互联网上其他人们下载非线程安全版本的 grpc 的帖子不同,我下载了 threadsafe 并且它工作正常。

    【讨论】:

    • 你的评论帮助我,谢谢。我得到了 NTS 版本...
    【解决方案3】:

    我想为7.4.4 PHP版本添加答案,

    我从这个链接https://windows.php.net/downloads/pecl/releases/grpc/1.27.0/下载了php_grpc-1.27.0-7.4-ts-vc15-x64.zip

    然后我将粘贴的php_grpc.dll 复制到 C:\xampp\php\ext 文件夹

    在下一步中,我在 Dynamic extensions added extension=grpc 下打开了 php.ini

    然后重新启动,它工作正常。

    【讨论】:

    • 帮助了我。 Windows 10、XAMP 和 PHP 7.4
    【解决方案4】:

    请从这里下载 grpc 扩展 zip

    https://windows.php.net/downloads/pecl/releases/grpc/1.10.0/

    根据你的php版本(我的php版本是7.2.6和x86架构xampp)我下载了php_grpc-1.10.0-7.2-ts-vc15-x86.zip

    下载解压压缩文件后,将 php_grpc.dll 复制到例如 C:\xampp\php\ext 文件夹中

    在动态扩展下打开php.ini add extension=grpc

    重启你的apache服务器检查打开cmd并输入php -m它会显示所有启用的扩展。

    【讨论】:

    • 这个答案对我有用,我的 php 版本是7.2.11。我尝试了上面接受的答案,但它不起作用,我并不是说一个错误,但这个答案解决了我的问题。
    【解决方案5】:

    对于 windows,现代 Xampp 在 php.ini 中具有 as 语法 扩展=php_grpc

    不需要 .dll 作为后缀

    【讨论】:

      【解决方案6】:

      我的 PHP 版本是 7.2。

      我在我的xampp/php/ext/php_grpc.dll中下载并上传了php_grpc.dll,并在php.initextension=grpc中添加了代码(最新版本不需要添加php_和.dll),然后我重新启动Xampp

      现在终端说

      PHP 警告:PHP 启动:无法加载动态库 'grpc'(已尝试:E:\xampp\php\ext\grpc(找不到指定的模块。),E:\xampp\php\ext\ php_grpc.dll (The specified module could not be found.)) 在 Unknown on line 0

      您的需求无法解析为一组可安装的软件包。

      问题 1 - google/cloud-firestore v1.6.2 需要 ext-grpc * -> 您的系统中缺少请求的 PHP 扩展 grpc。 - google/cloud-firestore v1.6.1 需要 ext-grpc * -> 您的系统中缺少请求的 PHP 扩展 grpc。 - google/cloud-firestore v1.6.0 需要 ext-grpc * -> 您的系统中缺少请求的 PHP 扩展 grpc。 - google/cloud-firestore ^1.6 的安装请求 -> 可由 google/cloud-firestore[v1.6.0, v1.6.1, v1.6.2] 满足。

      要启用扩展,请确认它们已在您的 .ini 文件中启用: -E:\xampp\php\php.ini 您也可以在终端中运行php --ini,以查看 PHP 在 CLI 模式下使用了哪些文件。

      安装失败,正在将 ./composer.json 还原为其原始内容。

      【讨论】:

      • 这似乎不是一个答案。如果这是一个答案,请您改写为 De Hams,所以显然是这样。谢谢。
      • 不,这是一个问题,最后解决使用此链接中的 php_grpc.dll windows.php.net/downloads/pecl/releases/grpc/1.10.0
      • @DeHams 谢谢,我下载了 threadsafe x64 版本,它对我有用
      猜你喜欢
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 2014-07-22
      相关资源
      最近更新 更多