0

我正在尝试使用 Google 消息传递系统,但在开始之前我失败了。我试图从一个超级简单的应用程序开始,它只传输“hello world”消息然后捕获它。将其保存在数据库中,其他任务将在此服务启动并运行后完成。

但是我无法让它工作。我收到错误:

[my-app].appspot.com 目前无法处理此请求。HTTP 错误 500

在日志上,我看到了问题:

PHP 致命错误:在第 14 行的 /base/data/home/apps/g~[my-app]/20170809t182312.403268501910529191/printHello.php 中找不到类“Google\Cloud\PubSub\PubSubClient”

第 14 行是:$pubsub = new PubSubClient([这是从谷歌文档复制粘贴

考虑:

  • 该应用程序在没有以下内容的情况下运行良好:use Google\Cloud\PubSub\PubSubClient;。我删除了除 an 之外的所有内容,echo "... some text praying to make it work..."并显示了它。所以 app.yaml 文件或其他地方没有问题。

  • 我能够从主题详细信息页面发送消息并在 Web 控制台中接收它,因此所有授权和启用都正确完成。

  • 在本地机器上,Intellij IDEA 在我安装了 beta 组件后识别了 PubSubClient 类。该应用程序无法在本地计算机上运行,​​但我什至没有尝试过。我希望能够使其第一次在服务器上运行。

  • 我检查过,本地的所有文件也都存在于服务器上。

我错过了什么?我阅读了在 cloud.google 上找到的所有页面。...以及我在互联网上找到的所有内容,但似乎没有人遇到类似的问题。因此,我做错或没有做错一定是非常简单的事情。有什么建议么?

4

1 回答 1

0

GAE 中默认未启用Google Cloud PubSub 。您需要将其添加到您的应用程序代码中。从纯 PHP

您可以通过将代码放在应用程序的目录中来在应用程序中包含其他纯 PHP 库,该目录与包含您的app.yaml文件的目录相同。

例如,您可以在应用程序目录中创建指向库目录的符号链接。然后跟随该链接,当您部署到 App Engine 时,该库将包含在您的应用程序中。

您还可以通过指定php.ini指令并include在代码中包含 PHP 语句来包含 PHP 库。但是,首选的替代方法是使用 PHP 依赖项管理工具,例如Composer

我会在 Intellij IDEA 中检查您本地系统上的库/类在哪里,并将其符号链接到您的应用程序目录中。可能有必要调整use语句和/或符号链接源目录以使事情顺利进行。

注意:我是 Python 用户,而不是 PHP 用户,所以请谨慎对待。

于 2017-08-10T02:38:06.677 回答