将参数传递给 app.yaml Google App Engine 中的 php

Posted

技术标签:

【中文标题】将参数传递给 app.yaml Google App Engine 中的 php【英文标题】:Pass parameters to php in app.yaml Google App Engine 【发布时间】:2015-02-24 18:08:23 【问题描述】:

标题中提到了我的问题,但我会重申。我是 GAE 及其所有东西的新手。我的应用程序使用 phpmysql。我有 mysql 在 Cloud Sql 中工作,我刚刚将我的应用程序部署到应用程序引擎。

什么起作用:不需要参数的 PHP 脚本,即 (FooBar.php)

什么不起作用:我需要传递参数的 PHP 脚本,即 (FooBar.php?foo=bar)

我认为解决方案是如何配置 app.yaml 文件。

我再说一遍,定期执行 PHP 脚本。

我需要参数的地方是我唯一的问题。

这是我的 app.yaml 文件的示例

application: foo-bar-111
version: 1
runtime: php
api_version: 1

handlers:
- url: /(.+\.php)$
  script: \1

任何帮助将不胜感激!!!

【问题讨论】:

我尝试修复了您问题中的格式,因此 app.yaml 更清晰。这正是您的 app.yaml 文件的样子吗?除了添加前导空格以将其格式化为代码之外,我还删除了“应用程序”行开头的一个引号和“-url”行末尾的另一个引号——只是确保这是一个复制/粘贴错误并且这些字符实际上不在您的 app.yaml 文件中。 而且,需要明确的是,您在访问“/FooBar.php?foo=bar”时收到什么错误?是否调用了“FooBar”处理程序(就像访问“/FooBar.php”时一样),或者您收到 404 错误,还是什么? 【参考方案1】:

您复制到问题中的 app.yaml(假设我在 cmets 中记下的引号实际上不在您的 app.yaml 文件中)对于带参数和不带参数的 URL 看起来都很好。目前尚不清楚您收到了什么错误和/或您看到了什么意外行为。

需要明确的是,app.yaml 文件将传入请求路由到您的 php 脚本。您问题中的 app.yaml 文件应运行 FooBar.php 脚本,以实现对两者的 URL 命中

/FooBar.php 

/FooBar.php?foo=bar 

PHP 脚本本身应该使用

访问参数(如果存在)
$_GET["foo"]

这是您所期望的,还是您想根据不同的查询字符串参数路由到不同的脚本?如果是后者,我认为这是不可能的——你必须在脚本本身中处理它。

另外,您引用的 URL 是否仅使用查询字符串?一定要记住

/FooBar.php/foo-bar

或者类似的东西,不会被那个 yaml 条目匹配。如果路径中可能包含尾随字符,请删除尾随的“$”并包含“.*”,例如:

- url: /(.+\.php).*

这将匹配所有示例,并将它们全部发送到您的 FooBar.php 脚本。

[之前编辑过——感谢 Stuart 在我之前的回答中发现了错误]

【讨论】:

谢谢迈克。您能否举例说明 url 和 script 字段如何查找带有参数的那种类型的文件?这是 app.yam 文件的实际格式示例。 image.slidesharecdn.com/appengine-php-140415030016-phpapp01/95/… 查询字符串没有用于匹配路由 - 所以这个答案很遗憾是不正确的。您需要将 app.yaml 正确粘贴到问题中,例如我在您上面发布的内容中看到“”。 这不能回答我的问题。我已经执行了常规的 php 脚本,并且我的示例格式被堆栈溢出破坏了哈哈。我提供的链接是我的文件的样子,但如何格式化它以接受参数是我需要一个清晰的例子。 我看不到任何链接 - 只是在您的 app.yaml 中正确过去,以便我们查看。 迈克 它正在工作!!!!我不知道它能够在有或没有参数的情况下点击 url。但我认为解决方案是网址并在我的最后添加“。*”和一些调试。但是您的解决方案是正确的。再次感谢哥们!!

以上是关于将参数传递给 app.yaml Google App Engine 中的 php的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Functions - 为啥 GCF 将两个位置参数传递给我的函数?

如何在 JS 中手动将 gclid 参数传递给 Google Analytics

有没有办法将参数传递给 google bigquery 以在其“IN”函数中使用

如何将输入参数传递给 AWS Glue Map.apply 函数

如何从 google.cloud.monitoring_v3 将参数传递给 list_time_series 方法?

上传属性 Google App Engine - app.yaml