Google App Engine Flex:Wordpress插件的读/写文件权限

时间:2018-05-24 00:19:04

标签: wordpress google-app-engine

我们正在努力了解Google App Engine是否适合我们的Wordpress网站。我刚刚遇到一个插件的问题,该插件需要一个具有读/写/执行权限的文件夹。

" All in One WP Migration无法创建/ app / wordpress / wp-content / plugins / all-in-one-wp-migration / storage文件夹。您需要创建此文件夹并为其授予读取/写入/执行权限(0777)以使All in One WP Migration插件正常运行。"

我注意到为了上传媒体文件,您需要激活Google云端存储插件。所以这会解决这个问题,但我该如何处理插件和其他I / O?

我认为使用Flex而不是Standard会解决这个问题。

的app.yaml

runtime: php
env: flex

beta_settings:
  cloud_sql_instances: my-project:us-east4:test-instance

runtime_config:
  document_root: wordpress

env_variables:
  WHITELIST_FUNCTIONS: escapeshellarg,escapeshellcmd,exec,pclose,popen,shell_exec,phpversion,php_uname

的php.ini

extension=bcmath.so
extension=gd.so
zend_extension=opcache.so
short_open_tag=On
google_app_engine.disable_readonly_filesystem = 1

编辑:

我在app.yaml中发现了一些内容 HOWEVER 我不知道这应该是生产中的东西

在我添加的runtime_config

skip_lockdown_document_root: true

我想知道这是否可以放在现场网站上。

我还说:

handlers:
- url: /(.*\.(htm|html|css|js))$
  static_files: wordpress/\1
  upload: wordpress/.*\.(htm|html|css|js)$
  application_readable: true

- url: /wp-content/(.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg))$
  static_files: wordpress/wp-content/\1
  upload: wordpress/wp-content/.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg)$
  application_readable: true

- url: /(.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg))$
  static_files: wordpress/\1
  upload: wordpress/.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg)$
  application_readable: true

- url: /wp-includes/images/media/(.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg))$
  static_files: wordpress/wp-includes/images/media/\1
  upload: wordpress/wp-includes/images/media/.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg)$
  application_readable: true

- url: /wp-admin/(.+)
  script: wordpress/wp-admin/\1
  secure: always

- url: /wp-admin/
  script: wordpress/wp-admin/index.php
  secure: always

- url: /wp-login.php
  script: wordpress/wp-login.php
  secure: always

- url: /wp-cron.php
  script: wordpress/wp-cron.php
  login: admin

- url: /xmlrpc.php
  script: wordpress/xmlrpc.php

- url: /wp-(.+).php
  script: wordpress/wp-\1.php

- url: /(.+)?/?
  script: wordpress/index.php

1 个答案:

答案 0 :(得分:0)

如果您想使用GAE应用无法写入文件系统的标准there's the limitation

如果插件需要写入文件系统,那么你应该使用flex。

即使使用flex,文件系统中写入的内容也不会保留,因为唯一的当前存储选项是create a ramdisk in the instance,但存储在那里的数据不会在实例之间共享,并且会在实例死亡时丢失

似乎有一些workaround使用GCSfuse在GAE flex中安装一个有点持久的存储空间,但我不建议你这样做,因为你会遇到concurrent write问题。

总而言之,如果您需要将数据读写到所有实例之间共享的持久存储中,GAE就不适合您。毕竟,无服务器的全部意义在于执行的幂等性。如果你的应用程序依赖于本地存储的文件(就像这个Wordpress插件似乎那样),那么执行的结果将取决于处理请求的实例。