【问题标题】:Google App Engine Flex: Wordpress Plugin's Read/Write File PermissionsGoogle App Engine Flex:Wordpress 插件的读/写文件权限
【发布时间】:2018-05-24 00:19:03
【问题描述】:

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

“一体化 WP 迁移无法创建 /app/wordpress/wp-content/plugins/all-in-one-wp-migration/storage 文件夹。您需要创建此文件夹并授予它读取权限/ All in One WP Migration 插件的写入/执行权限 (0777) 才能正常运行。”

我注意到要上传媒体文件,您需要激活 Google Cloud Storage 插件。所以这解决了这个问题,但我应该如何处理插件和其他 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 中找到了一些东西但是我不知道这是否应该在生产中使用

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

【问题讨论】:

    标签: wordpress google-app-engine


    【解决方案1】:

    如果你想使用标准,there's the limitation GAE 应用程序无法写入文件系统。

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

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

    似乎有一些 workaround 可以使用 GCSfuse 在 GAE flex 中挂载一些持久性存储,但我不建议这样做,因为您会遇到 concurrent write 问题。

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

    【讨论】:

      猜你喜欢
      • 2013-05-15
      • 2020-09-12
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 2012-04-26
      • 2012-12-11
      • 1970-01-01
      • 2013-01-26
      相关资源
      最近更新 更多