我们正在努力了解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
答案 0 :(得分:0)
如果您想使用GAE应用无法写入文件系统的标准there's the limitation。
如果插件需要写入文件系统,那么你应该使用flex。
即使使用flex,文件系统中写入的内容也不会保留,因为唯一的当前存储选项是create a ramdisk in the instance,但存储在那里的数据不会在实例之间共享,并且会在实例死亡时丢失
似乎有一些workaround使用GCSfuse在GAE flex中安装一个有点持久的存储空间,但我不建议你这样做,因为你会遇到concurrent write问题。
总而言之,如果您需要将数据读写到所有实例之间共享的持久存储中,GAE就不适合您。毕竟,无服务器的全部意义在于执行的幂等性。如果你的应用程序依赖于本地存储的文件(就像这个Wordpress插件似乎那样),那么执行的结果将取决于处理请求的实例。