为本地主机安装 gRPC
Installing gRPC for localhost
我正在使用 Google Cloud Firestore, it requires me to install and enable the gRPC extension 的 PHP 库。我已经阅读了
的指南
Windows users can download and enable DLLs from PECL. Support for
Windows is experimental
在 PECL 站点中,我可以看到许多指向 tgz
和 DLL
文件的链接,但没有任何关于如何在 XAMPP 中使用或激活它们的解释本地主机
借助this link..我发现这些步骤会激活gRPC
来自 PECL site (or windows.php.net 具有完全相同的文件)..选择最新稳定版本的 DLL
根据 PHP 版本你有:
For XAMPP with PHP > 7.2.15 .. 选择 Thread Safe (TS) x64
对于较旧的 XAMPP .. 选择 线程安全 (TS) x86
下载 ZIP 文件然后解压其内容
- 将
php_grpc.dll
文件复制到XAMPP中的extensions文件夹(你可以在php.ini
中找到路径)..在我的如果是 extension_dir="C:\xampp\php\ext"
在您的 php.ini
文件中启用扩展程序:
对于 PHP 版本 7.2 及更高版本.. 添加 extension=grpc
对于旧的PHP .. 添加extension=php_grpc.dll
- 重新启动XAMPP,扩展将被激活,如
phpinfo()
所示
对于 windows 现代 Xampp 具有 php.ini 中的语法
扩展=php_grpc
trail 中不需要 .dll 作为扩展名
请从此处下载 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 添加扩展=grpc
重新启动您的 apache 服务器以检查打开 cmd 并输入 php -m 它会显示所有已启用的扩展。
我的 PHP 版本是 7.2。
我在 xampp/php/ext/php_grpc.dll
中下载并上传了 php_grpc.dll
,并在 php.init
、extension=grpc
中添加了代码(在最新版本中,您不需要添加 php_ 和.dll),然后我重新启动 Xampp
现在终端显示
PHP Warning: PHP Startup: Unable to load dynamic library 'grpc' (tried: E:\xampp\php\ext\grpc (The specified module could not be found.), E:\xampp\php\ext\php_grpc.dll (The specified module could not be found.)) in Unknown on line 0
Your requirements could not be resolved to an installable set of packages.
Problem 1
- google/cloud-firestore v1.6.2 requires ext-grpc * -> the requested PHP extension grpc is missing from your system.
- google/cloud-firestore v1.6.1 requires ext-grpc * -> the requested PHP extension grpc is missing from your system.
- google/cloud-firestore v1.6.0 requires ext-grpc * -> the requested PHP extension grpc is missing from your system.
- Installation request for google/cloud-firestore ^1.6 -> satisfiable by google/cloud-firestore[v1.6.0, v1.6.1, v1.6.2].
To enable extensions, verify that they are enabled in your .ini files:
- E:\xampp\php\php.ini
You can also run php --ini
inside terminal to see which files are used by PHP in CLI mode.
Installation failed, reverting ./composer.json to its original content.
Windows 10 | PHP7.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/ 中的 dependency 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 安装站点上提到的 link。还有其他人在这里有 link。在 post 时,我采用了最新版本 1.24.0。我选择了线程安全版本。
我选择线程安全版本的原因是因为我收到版本不匹配的错误。您还可以通过在控制台中执行 "php -i" 来检查您的版本,其中 returns 与 phpinfo(); 相同的信息;将输出复制并粘贴到某些文本编辑器中,然后搜索 PHP Extension Build。下面是我看到的
PHP 扩展构建 => API20160303,TS,VC14
注意,它是 TS 又名线程安全的。因此,与互联网上人们下载非线程安全版本的 grpc 的其他 post 不同,我下载了线程安全并且它有效。
我想为 7.4.4 PHP 版本添加答案,
我从这个 link 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文件夹
下一步我在动态扩展下打开 php.ini 添加扩展=grpc
然后重新启动,一切正常。
我正在使用 Google Cloud Firestore, it requires me to install and enable the gRPC extension 的 PHP 库。我已经阅读了
的指南Windows users can download and enable DLLs from PECL. Support for Windows is experimental
在 PECL 站点中,我可以看到许多指向 tgz
和 DLL
文件的链接,但没有任何关于如何在 XAMPP 中使用或激活它们的解释本地主机
借助this link..我发现这些步骤会激活gRPC
来自 PECL site (or windows.php.net 具有完全相同的文件)..选择最新稳定版本的 DLL
根据 PHP 版本你有:
For XAMPP with PHP > 7.2.15 .. 选择 Thread Safe (TS) x64
对于较旧的 XAMPP .. 选择 线程安全 (TS) x86
下载 ZIP 文件然后解压其内容
- 将
php_grpc.dll
文件复制到XAMPP中的extensions文件夹(你可以在php.ini
中找到路径)..在我的如果是extension_dir="C:\xampp\php\ext"
在您的
php.ini
文件中启用扩展程序:对于 PHP 版本 7.2 及更高版本.. 添加
extension=grpc
对于旧的PHP .. 添加
extension=php_grpc.dll
- 重新启动XAMPP,扩展将被激活,如
phpinfo()
所示
对于 windows 现代 Xampp 具有 php.ini 中的语法 扩展=php_grpc
trail 中不需要 .dll 作为扩展名
请从此处下载 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 添加扩展=grpc
重新启动您的 apache 服务器以检查打开 cmd 并输入 php -m 它会显示所有已启用的扩展。
我的 PHP 版本是 7.2。
我在 xampp/php/ext/php_grpc.dll
中下载并上传了 php_grpc.dll
,并在 php.init
、extension=grpc
中添加了代码(在最新版本中,您不需要添加 php_ 和.dll),然后我重新启动 Xampp
现在终端显示
PHP Warning: PHP Startup: Unable to load dynamic library 'grpc' (tried: E:\xampp\php\ext\grpc (The specified module could not be found.), E:\xampp\php\ext\php_grpc.dll (The specified module could not be found.)) in Unknown on line 0
Your requirements could not be resolved to an installable set of packages.
Problem 1 - google/cloud-firestore v1.6.2 requires ext-grpc * -> the requested PHP extension grpc is missing from your system. - google/cloud-firestore v1.6.1 requires ext-grpc * -> the requested PHP extension grpc is missing from your system. - google/cloud-firestore v1.6.0 requires ext-grpc * -> the requested PHP extension grpc is missing from your system. - Installation request for google/cloud-firestore ^1.6 -> satisfiable by google/cloud-firestore[v1.6.0, v1.6.1, v1.6.2].
To enable extensions, verify that they are enabled in your .ini files: - E:\xampp\php\php.ini You can also run
php --ini
inside terminal to see which files are used by PHP in CLI mode.Installation failed, reverting ./composer.json to its original content.
Windows 10 | PHP7.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/ 中的 dependency 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 安装站点上提到的 link。还有其他人在这里有 link。在 post 时,我采用了最新版本 1.24.0。我选择了线程安全版本。
我选择线程安全版本的原因是因为我收到版本不匹配的错误。您还可以通过在控制台中执行 "php -i" 来检查您的版本,其中 returns 与 phpinfo(); 相同的信息;将输出复制并粘贴到某些文本编辑器中,然后搜索 PHP Extension Build。下面是我看到的
PHP 扩展构建 => API20160303,TS,VC14
注意,它是 TS 又名线程安全的。因此,与互联网上人们下载非线程安全版本的 grpc 的其他 post 不同,我下载了线程安全并且它有效。
我想为 7.4.4 PHP 版本添加答案,
我从这个 link 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文件夹
下一步我在动态扩展下打开 php.ini 添加扩展=grpc
然后重新启动,一切正常。