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 byexplode
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