Google App Engine“解析./app.yaml时出错:未知的网址处理程序类型”

时间:2014-08-22 19:07:04

标签: php python mysql google-app-engine phpmyadmin

我正在关注如何在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

4 个答案:

答案 0 :(得分:12)

如果有其他人遇到此问题,我遇到了同样的问题。您必须为所有子目录添加两个空格。确保单词与“url”一致。

不起作用:

- url: /
script: phpMyAdmin/index.php
secure: always
login: admin

不起作用:

- url: /
 script: phpMyAdmin/index.php
 secure: always
 login: admin

WORKS:

- 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选项的第二个命令就可以了。

答案 1 :(得分:5)

就我而言,这不是 空格问题。

我最初有app.yaml文件:

runtime: nodejs12

handlers:
- url: /.*
  secure: always

在部署时产生了错误

Unknown url handler type.
<URLMap 
    secure=always
    ...
    >

https://cloud.google.com/appengine/docs/standard/nodejs/config/appref#handlers_element处的文档表明我在处理程序元素中缺少script: auto

要使用静态处理程序,您的至少一个处理程序必须包含以下行脚本:auto或定义一个成功部署的入口点元素。

所以我更新了我的app.yaml:

runtime: nodejs12

handlers:
- url: /.*
  secure: always
  script: auto

部署成功。

答案 2 :(得分:2)

尝试为任何子项添加空格。 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

答案 3 :(得分:2)

我有同样的问题。本教程中的错误确实是短划线下方行上的两个缺失空格,因此从

更改
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$))

...