编程语言
首页 > 编程语言> > Google App Engine app.yaml PHP脚本参数

Google App Engine app.yaml PHP脚本参数

作者:互联网

在我的GAE PHP app.yaml中,我试图这样做:

application: myapp
version: 1
runtime: php
api_version: 1
threadsafe: yes

handlers:

- url: /sitemap.xml    
  static_files: sitemap.xml
  upload: /sitemap\.xml

- url: /MyOneLink
  script: /myDynamicContent.php?myparam=hardcoded_value_1

- url: /MySecondLink
  script: /myDynamicContent.php?myparam=hardcoded_value_2

因此,可以浏览http://example.com/MyOneLink并获取动态php的结果(这取决于硬编码的myparam值)

问题是浏览时没有任何显示.
任何想法 ?

顺便说一句:您可以弄清楚为什么我还要发布“ sitemap.xml”:它将用于公开所有myLinks

谢谢
迭戈

解决方法:

对于有限数量的硬编码值(如问题所示),其他答案将是合适的.

但是,如果您想使用具有无限可能值的真正动态版本,那么您可能会想到以下几点(无效):

- url: /MyLinks/(.*)/?
  script: /myDynamicContent.php?myparam=\1

上面的方法不起作用.您可以使用简单的PHP hack解决该问题.

将app.yaml更新为:

- url: /MyLinks/.*
  script: /myDynamicContent.php

在myDynamicContent.php中,获取$_SERVER [‘REQUEST_URI’]的值,然后解析此字符串以获取myparam的预期值.

更新!更优雅的方法:

<?php
$requestURI = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
$requestURI = explode("/", $requestURI);
$myparam = $requestURI[2];
echo $myparam;
?>

Since parse_url always gets the path info, we can safely depend on hardcoded indices. The array produced by explode for string /MyLinks/value_1 will contain an empty string at index 0, MyLinks at 1, value_1 at 2, and so on.

原始的笨重方法:

<?php
$requestURI = explode("/", $_SERVER["REQUEST_URI"]);
for ($i = 0; $i < count($requestURI); $i++) {
    if (strcmp($requestURI[$i], "MyLinks") == 0) {
        $myparam = $requestURI[$i + 1];
        break;
    }
}
echo $myparam;
?>

提示:您可以使用单引号’代替双引号“

标签:php,google-app-engine,app-yaml,sitemap-xml
来源: https://codeday.me/bug/20191011/1891578.html