【发布时间】:2020-11-18 10:32:25
【问题描述】:
我有以下问题:
我安装了 grpc 并得到了给定的示例 (https://grpc.io/docs/languages/php/quickstart/),以便从运行 run_greeter_client.sh 文件的终端 (Windows PowerShell) 使用 PHP(以及使用链接提到的更改发送两个相同的文件) Hello World 的消息而不是一个)。我还在 php.ini 文件中添加了 extension=grpc.so,因此我什至可以使用指令“php greeter_client.php”从终端运行它。我使用 node .\greeter_server.js 指令来运行服务器。相反,当我尝试从浏览器运行 php 文件时,它显示我有一个 HTTP ERROR 500,当我检查日志时,我发现以下内容:
PHP Fatal error: Uncaught Error: Class 'Grpc\ChannelCredentials' not found
in D:\MAMP\grpc\grpc\examples\php\greeter_client.php:30
Stack trace:
#0 D:\MAMP\grpc\grpc\examples\php\greeter_client.php(50):
greet('localhost:50051', 'world')
#1 {main}
thrown in D:\MAMP\grpc\grpc\examples\php\greeter_client.php on line 30
这似乎很奇怪,因为当我使用 PHP 命令从 PowerShell(终端)运行它时,它运行正常并显示 2 条“Hello World”消息,但从浏览器中出现了问题(使用来自另一个 PowerShell 的相同节点 js 服务器)。您知道问题可能是什么吗?
非常感谢,如果您需要有关问题的更多详细信息,请不要关闭该问题,我可以提供您询问的任何信息,只需发表评论即可。
【问题讨论】:
-
你能把错误放在代码块中吗?
-
已编辑,我认为现在错误出现在代码块中。谢谢!
-
我认为您不能只在浏览器中运行 .php 代码。浏览器无法解释或运行 .php 代码。
-
我们可以在 localhost 模式下使用 MAMP、xampp 等工具从浏览器运行 PHP 文件。我尝试从浏览器运行一个简单的 .php 文件,它确实运行并产生了适当的结果(例如,与 greeter_client.php 位于同一路径的 test.php 文件运行正常并在带回声的浏览器)。
标签: php grpc http-status-code-500 classnotfound