Я пытаюсь заставить локальную версию консоли разработчика Google App Engine работать с хранилищем файлов. Это прекрасно работает на нескольких машинах Windows. Тем не менее, когда я пытаюсь в системе Mint Linux, все работает, кроме хранения файлов.
Прежде всего мне нужно было добавить следующую строку в php.ini:
google_app_engine.disable_readonly_filesystem = 1
После этого я мог загружать изображения и видеть их в консоли разработчика в Blobstore Viewer. Тем не менее я не мог видеть их в браузере.
Когда я копался в журналах, выскакивали следующие сообщения.
ERROR 2016-06-08 20:15:59,459 images_stub.py:438] Could not open image <open file '/tmp/appengine.app app.user/blobs/dev~app-app/n/ncoded_gs_file:cGluZ3ZhbHVlLWJ1Y2tldC1sb2NhbC9zdG9yYWdlL2ltYWdlcy91c2Vycy8xNDY1NDE2OTU3LWltZ2pwZw==', mode 'rb' at 0x7f906e2b2e40> for blob_key 'encoded_gs_file:cGluZ3ZhbHVlLWJ1Y2tldC1sb2NhbC9zdG9yYWdlL2ltYWdlcy91c2Vycy8xNDY1NDE2OTU3LWltZ2pwZw=='
Traceback (most recent call last):
File "/home/user/Programs/google_appengine/google/appengine/api/images/images_stub.py", line 433, in _OpenBlob
return Image.open(blob_file)
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 1991, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
ApplicationError(4,)
Traceback (most recent call last):
File "/home/user/Programs/google_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 1302, in communicate
req.respond()
File "/home/user/Programs/google_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 831, in respond
self.server.gateway(self).respond()
File "/home/user/Programs/google_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 2115, in respond
response = self.req.server.wsgi_app(self.env, self.start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 272, in __call__
return app(environ, start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/module.py", line 1489, in __call__
return self._handle_request(environ, start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/module.py", line 865, in _handle_request
ret = handler.handle(match, environ, wrapped_start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/wsgi_handler.py", line 60, in handle
return self._wsgi_app(environ, start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/blob_image.py", line 224, in __call__
return self.serve_image(environ, start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/blob_image.py", line 213, in serve_image
image, mime_type = self._transform_image(blobkey, resize, crop)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/blob_image.py", line 78, in _transform_image
image = _get_images_stub()._OpenImageData(image_data)
File "/home/user/Programs/google_appengine/google/appengine/api/images/images_stub.py", line 371, in _OpenImageData
image = self._OpenBlob(image_data.blob_key())
File "/home/user/Programs/google_appengine/google/appengine/api/images/images_stub.py", line 441, in _OpenBlob
images_service_pb.ImagesServiceError.BAD_IMAGE_DATA)
ApplicationError: ApplicationError: 4
Traceback (most recent call last):
File "/home/user/Programs/google_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 1302, in communicate
req.respond()
File "/home/user/Programs/google_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 831, in respond
self.server.gateway(self).respond()
File "/home/user/Programs/google_appengine/lib/cherrypy/cherrypy/wsgiserver/wsgiserver2.py", line 2115, in respond
response = self.req.server.wsgi_app(self.env, self.start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 272, in __call__
return app(environ, start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/module.py", line 1489, in __call__
return self._handle_request(environ, start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/module.py", line 865, in _handle_request
ret = handler.handle(match, environ, wrapped_start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/wsgi_handler.py", line 60, in handle
return self._wsgi_app(environ, start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/blob_image.py", line 224, in __call__
return self.serve_image(environ, start_response)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/blob_image.py", line 213, in serve_image
image, mime_type = self._transform_image(blobkey, resize, crop)
File "/home/user/Programs/google_appengine/google/appengine/tools/devappserver2/blob_image.py", line 78, in _transform_image
image = _get_images_stub()._OpenImageData(image_data)
File "/home/user/Programs/google_appengine/google/appengine/api/images/images_stub.py", line 371, in _OpenImageData
image = self._OpenBlob(image_data.blob_key())
File "/home/user/Programs/google_appengine/google/appengine/api/images/images_stub.py", line 441, in _OpenBlob
images_service_pb.ImagesServiceError.BAD_IMAGE_DATA)
Сообщение устраняет неправильные данные изображения. все же devserver не имеет проблем с чтением этого.
Могу ли я предпринять какие-либо действия для решения этой проблемы?
Вероятно, это проблема SELinux. Разрешение веб-серверу писать на /home/
обычно не включается в политику SELinux по умолчанию.
Проверьте свои журналы в / var / log / messages и /var/log/audit/audit.log. Вы можете получить дополнительную информацию о выключении SELinux или переконфигурировать его, чтобы разрешить запись в /home/
,
Других решений пока нет …