【问题标题】:grpc example php, “Class 'Grpc\ChannelCredentials' not found.” when oppening from browser, works from terminalgrpc 示例 php,“找不到类 'Grpc\ChannelCredentials'。”从浏览器打开时,从终端工作
【发布时间】: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


【解决方案1】:

我终于解决了这个问题,每当我从终端运行文件时,它使用的 php.ini 文件都有一个特定位置,我已经将其更改为包含 grpc 扩展名。虽然,我从浏览器运行它时使用的 php.ini 文件的位置是错误的。如果您遇到类似的问题,您可以从浏览器查看 phpinfo 页面,并在“加载的配置文件”字段指示的路径中找到 php.ini 文件。谢谢!

【讨论】:

    猜你喜欢
    • 2016-11-06
    • 2019-04-29
    • 2020-11-20
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 2019-02-12
    相关资源
    最近更新 更多