为localhost安装gRPC

时间:2018-05-07 21:33:38

标签: xampp google-cloud-firestore grpc

我正在使用Google Cloud Firestore的PHP库,它要求我安装并启用gRPC extension ..我已阅读指南

  

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

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

6 个答案:

答案 0 :(得分:3)

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

  1. PECL网站..选择最新稳定版本的DLL enter image description here
  2. 根据您的PHP版本..选择非线程安全(NTS)x86 enter image description here
  3. 下载ZIP文件,然后提取其内容
  4. php_grpc.dll文件复制到XAMPP中的 extensions文件夹(您可以在php.ini中找到路径)..就我而言,它是extension_dir="C:\xampp\php\ext" < / LI>
  5. 通过添加php.ini
  6. extension=php_grpc.dll文件中启用扩展程序
  7. 重新启动XAMPP,将激活扩展程序,如phpinfo()
  8. 所示

    enter image description here

答案 1 :(得分:0)

对于Windows,现代Xampp在php.ini中具有语法 extension = php_grpc

不需要.dll作为扩展名

答案 2 :(得分:0)

请从此处下载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

下载解压缩后的zip文件副本php_grpc.dll后,例如在C:\ xampp \ php \ ext文件夹中

在动态扩展下打开php.ini,添加extension = grpc

重新启动apache服务器以检查是否打开了cmd,然后键入php -m,它将显示所有已启用的扩展。

答案 3 :(得分:0)

我的PHP版本是7.2。

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

现在终端说

  

PHP警告:PHP启动:无法加载动态库'grpc'(尝试:E:\ xampp \ php \ ext \ grpc(找不到指定的模块。),E:\ xampp \ php \ ext \ php_grpc.dll(找不到指定的模块。)在第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,以查看CLI模式下PHP使用了哪些文件。

     

安装失败,将./composer.json恢复为其原始内容。

答案 4 :(得分:0)

Windows 10 | PHP 7.1

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

,都抛出了相同的错误。

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

请注意,我没有安装此下载的PHP,但我注意到它具有php7.dll。 我使用了http://www.dependencywalker.com/中的依赖项遍历器来检查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 aka线程安全的。因此,与互联网上其他人下载非线程安全版本的grpc的其他帖子不同,我下载了线程安全并且它可以工作。

答案 5 :(得分:0)

我想为7.4.4 PHP版本添加答案

我从此链接here下载了php_grpc-1.27.0-7.4-ts-vc15-x64.zip

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

下一步,我在添加了extension = grpc的动态扩展下打开php.ini

,然后重新启动,运行正常。