PHP应用引擎部署问题


PHP App Engine deployment issue

我遇到了一个非常奇怪的问题,无法解决。即使谷歌团队也在努力解决这个问题,但到目前为止还无法解决。

我有一个CSS文件,它是相同的,因为很长一段时间,从未改变从过去的1-2年。现在我想在一个地方改变。我将max-width更改为max-height并保存。现在我正在部署代码,但是它抛出了一个异常:

11:12 AM Scanned 1500 files.
11:12 AM Scanned 2000 files.
11:12 AM Scanned 2500 files.
11:12 AM Scanned 3000 files.
11:12 AM Scanned 3500 files.
11:12 AM Scanned 4000 files.
11:12 AM Scanned 4500 files.
11:12 AM Scanned 5000 files.
11:12 AM Scanned 5500 files.
11:12 AM Cloning 2639 static files.
11:12 AM Cloned 2000 files.
11:12 AM Cloning 2916 application files.
11:12 AM Cloned 2000 files.
11:12 AM Uploading 1 files and blobs.
2014-07-29 11:12:36,450 ERROR appcfg.py:2559 An unexpected error occurred. Abort
ing.
Traceback (most recent call last):
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 2400, in DoUpload
self._UploadMissingFiles(missing_files, openfunc)
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 2538, in _UploadMissingFiles
self.blob_batcher.Flush()
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 1442, in Flush
self.SendBatch()
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 1401, in SendBatch
payload,
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 1934: ordin
al not in range(128)
11:12 AM Rolling back the update.
Traceback (most recent call last):
File "C:'Program Files (x86)'Google'google_appengine'appcfg.py", line 126, in
<module>
run_file(__file__, globals())
File "C:'Program Files (x86)'Google'google_appengine'appcfg.py", line 122, in
run_file
execfile(_PATHS.script_file(script_name), globals_)
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 5334, in <module>
main(sys.argv)
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 5325, in main
result = AppCfgApp(argv).Run()
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 2963, in Run
self.action(self)
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 4991, in __call__
return method()
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 3762, in Update
self._UpdateWithParsedAppYaml(appyaml, self.basepath)
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 3815, in _UpdateWithParsedAppYaml
self.UpdateVersion(rpcserver, basepath, appyaml, APP_YAML_FILENAME)
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 3698, in UpdateVersion
return appversion.DoUpload(paths, openfunc)
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 2400, in DoUpload
self._UploadMissingFiles(missing_files, openfunc)
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 2538, in _UploadMissingFiles
self.blob_batcher.Flush()
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 1442, in Flush
self.SendBatch()
File "C:'Program Files (x86)'Google'google_appengine'google'appengine'tools'ap
pcfg.py", line 1401, in SendBatch
payload,
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 1934: ordin
al not in range(128)

我再次将高度更改为宽度,并且它部署正确。两种情况下的文件编码类型均为UTF-8。对此有任何猜测或解决方案吗?如果你需要进一步的信息,我很乐意与你分享。

解决方案大多数情况下,即使您将文件编码类型更改为UTF-8,它也无法识别它。最好的方法是强制要求appfg .py用UTF-8编码格式处理文件。您可以通过更改app.yaml中文件格式的mime_type来实现,如下所示:
- url: /(.*'.(css$))
  static_files: '1
  upload: (.*'.(css$))
  mime_type: text/css; charset=UTF-8

通过这种方式,您的文件将被视为UTF-8,并且您的部署不会失败。

打开yourfile.css,并确保以utf-8编码保存。根据您的文本编辑器,您可以转到Save As,并选择编码。错误告诉您这是ascii编码的,并且它在位置1934找到了一个非ascii字符。使用文本编辑器找到第1934个字符,您将看到问题所在。你从网上复制/粘贴了这行吗?如果是,则很可能有非ascii的连字符、冒号、分号或引号。