Google App Engine“解析./app.yaml时出错:未知的url处理程序类型”
Posted
技术标签:
【中文标题】Google App Engine“解析./app.yaml时出错:未知的url处理程序类型”【英文标题】:Google App Engine "Error parsing ./app.yaml: Unknown url handler type" 【发布时间】:2014-10-16 17:13:34 【问题描述】:我正在关注如何在 Google App Engine 上安装 phpMyAdmin 的教程,并且我完全按照说明进行操作,当我去推送应用程序时,我遇到了解析错误。这是教程链接: https://gae-php-tips.appspot.com/2013/05/26/setting-up-phpmyadmin-on-app-engine/
我搜索了 Stackoverfllow 并发现了一些具有相同错误的问题,几乎每个人都说这是导致它的缩进问题,但我已经多次查看我的文件并没有在 app.yaml 文件中找到任何缩进。
这是我的 app.yaml 文件
application: phpmyadmin2121
version: phpmyadmin
runtime: php
api_version: 1
handlers:
- url: /(.*\.(ico$|jpg$|png$|gif$))
static_files: phpMyAdmin/\1
upload: phpMyAdmin/(.*\.(ico$|jpg$|png$|gif$))
application_readable: true
- url: /(.*\.(htm$|html$|css$|js$))
static_files: phpMyAdmin/\1
upload: phpMyAdmin/(.*\.(htm$|html$|css$|js$))
application_readable: true
- url: /(.*\.(php$))
script: phpMyAdmin/\1
secure: always
login: admin
- url: /(.+)
script: phpMyAdmin/index.php
secure: always
login: admin
- url: /
script: phpMyAdmin/index.php
secure: always
login: admin
这是显示错误的命令行提示:
Michaels-MacBook-Air:phpMyAdmin Mike$ appcfg.py -R -A phpmyadmin2121 -V phpmyadmin update 。 用法:appcfg.py [options] update | [文件,...]
appcfg.py: error: Error parsing ./app.yaml: Unknown url handler type.
<URLMap
secure=default
static_files=None
application_readable=None
auth_fail_action=redirect
require_matching_file=None
static_dir=None
redirect_http_response_code=None
http_headers=None
url=/(.*\.(ico$|jpg$|png$|gif$))
script=None
upload=None
api_endpoint=None
expiration=None
position=None
login=optional
mime_type=None
>
in "./app.yaml", line 8, column 1
【问题讨论】:
【参考方案1】:万一其他人遇到这个问题,我也遇到了同样的问题。您必须为所有子目录添加 两个 空格。确保单词与“url”一致。
不起作用:
- url: /
script: phpMyAdmin/index.php
secure: always
login: admin
不起作用:
- url: /
script: phpMyAdmin/index.php
secure: always
login: admin
作品:
- url: /
script: phpMyAdmin/index.php
secure: always
login: admin
另外,更改行以从这里更新应用程序:
appcfg.py -R -A my_application_id -V phpmyadmin update .
到这里:
appcfg.py --oauth2 -R -A my_application_id -V phpmyadmin update .
出于某种奇怪的原因,第一个命令要求您提供电子邮件和密码(我的个人电子邮件不起作用)。将第二个命令与 --oauth2 选项一起使用即可。
【讨论】:
这就是我讨厌 YAML 的原因。需要非常好的视力来判断您是否拥有正确的空格数。 你大(我)人!花了太多时间试图解决这个问题!【参考方案2】:就我而言,这不是空格问题。
我原来有 app.yaml 文件:
runtime: nodejs12
handlers:
- url: /.*
secure: always
... more handlers here ...
在部署时产生了错误
Unknown url handler type.
<URLMap
secure=always
...
>
https://cloud.google.com/appengine/docs/standard/nodejs/config/appref#handlers_element 的文档表明我的处理程序元素中缺少 script: auto
。
为了使用静态处理程序,至少有一个处理程序必须包含 line script: auto 或定义一个入口点元素才能成功部署。
所以我更新了我的 app.yaml:
runtime: nodejs12
handlers:
- url: /.*
secure: always
script: auto
... more handlers here ...
部署成功。
【讨论】:
【参考方案3】:尝试为任何子项添加空格。 PHP 使用与 python 相同的解析器。在 python 中,空格用于表示块。
application: phpmyadmin2121
version: phpmyadmin
runtime: php
api_version: 1
handlers:
- url: /(.*\.(ico$|jpg$|png$|gif$))
static_files: phpMyAdmin/\1
upload: phpMyAdmin/(.*\.(ico$|jpg$|png$|gif$))
application_readable: true
- url: /(.*\.(htm$|html$|css$|js$))
static_files: phpMyAdmin/\1
upload: phpMyAdmin/(.*\.(htm$|html$|css$|js$))
application_readable: true
- url: /(.*\.(php$))
script: phpMyAdmin/\1
secure: always
login: admin
- url: /(.+)
script: phpMyAdmin/index.php
secure: always
login: admin
- url: /
script: phpMyAdmin/index.php
secure: always
login: admin
【讨论】:
我试过了,但仍然返回一个错误,唯一不同的是现在它显示第 2 列。这很奇怪,因为我的其他应用程序没有错误并且它有类似的东西 奇怪的是,我刚刚尝试过,它成功了。我注意到的第一件事是您在 app.yaml 中的 appID 与您在命令行中输入的不匹配。你能运行 tree /f /a > tree.txt 并包含 5 行吗? 我是故意改的,但是忘记改命令行复制粘贴了,谢谢。我只是认为在此处发布您的应用程序名称是不明智的,但感谢您的尝试【参考方案4】:我遇到了同样的问题。教程中的错误确实是破折号下方的行上缺少两个空格,所以从
handlers:
- url: /(.*\.(ico$|jpg$|png$|gif$))
static_files: phpMyAdmin/\1
upload: phpMyAdmin/(.*\.(ico$|jpg$|png$|gif$))
...
到
handlers:
- url: /(.*\.(ico$|jpg$|png$|gif$))
static_files: phpMyAdmin/\1
upload: phpMyAdmin/(.*\.(ico$|jpg$|png$|gif$))
...
【讨论】:
以上是关于Google App Engine“解析./app.yaml时出错:未知的url处理程序类型”的主要内容,如果未能解决你的问题,请参考以下文章
Google App Engine Node.js 应用程序 - “解析 app.yaml 时出错:未知 url 处理程序类型”
在 Google-App-Engine 中使用 HSQLDB
Google Cloud 中的 Google Compute Engine、App Engine 和 Container Engine 有啥区别?
连接 Google App Engine 和 Google Compute Engine
Google App Engine Flexible 和 Google Container Engine 之间的区别?
如何在 Google Cloud App Engine 上使用 PubSub 创建订阅者,该订阅者通过 Publisher 从 Google Cloud App Engine Flex 收听消息?