【问题标题】:Google App Engine - PHP - Serve Static Files from Composer - WordPressGoogle App Engine - PHP - 从 Composer 提供静态文件 - WordPress
【发布时间】:2019-05-19 06:59:38
【问题描述】:

我在 App Engine 上有一个非常基本的应用程序,使用 PHP 7.2 设置。

official documentation of installing WP on GAE PHP 7.2 中,他们编写了一个复制 WordPress 文件的脚本,然后你提交并部署它们。

此作曲家配置使用johnpbloch/wordpresscomposer/installers,将WordPress 下载并安装到composer install 上的wp 文件夹,因此我不必提交或部署此代码。

composer.json 文件:

{
  "require": {
    "php": ">=7.2",
    "ext-phar": "*",
    "ext-zip": "*",
    "paragonie/random_compat": "^1.3",
    "symfony/console": "^3.0",
    "google/cloud-tools": "^0.8.5",
    "johnpbloch/wordpress": "^5.0.1",
    "vlucas/phpdotenv": "^2.5",
    "composer/installers": "^1.6"
  },
  "require-dev": {
    "phpunit/phpunit": "^5"
  },
  "extra": {
    "installer-paths": {
      "wp/wp-content/mu-plugins/{$name}/": ["type:wordpress-muplugin"],
      "wp/wp-content/plugins/{$name}/": ["type:wordpress-plugin"],
      "wp/wp-content/themes/{$name}/": ["type:wordpress-theme"]
    },
    "wordpress-install-dir": "wp"
  }
}

.gcloudignore文件:

.gcloudignore

# Git
.git
.gitignore

# PHP Composer dependencies
vendor
wp

app.yaml 文件:

runtime: php72

handlers:    
- url: /(.*\.(gif|png|jpg|htm|html|css|js))$
  static_files: wp/\1
  upload: wp/.*\.(gif|png|jpg|htm|html|css|js)$

因此,GAE 成功部署并构建了项目。

默认处理程序 (index.php) 似乎可以访问 vendor 文件夹,例如当写require __DIR__.'/wp/index.php' 时,它可以工作。

但它不会提供静态文件。转到像 <project>.appspot.com/wp-includes/images/media/audio.png 这样的 URL 会返回 404。

有什么想法吗?

【问题讨论】:

    标签: wordpress google-app-engine composer-php php-7.2 appengine-wordpress


    【解决方案1】:

    您的 app.yaml 正在引用 wp/ 目录,而您的 URL 正在寻找 wp-includes/ 目录。详见static_files的文档。

    【讨论】:

    • 这正是我所期望的行为,但它不起作用。 <project>.appspot.com/wp-includes/<file> 的 URL 应该来自 \wp\wp-includes\<file>
    【解决方案2】:

    您的app.yaml 的设置方式,对<project>.appspot.com/wp-includes/images/media/audio.png 的调用将尝试从目录上传:

    /wp/wp-includes/images/media/audio.png
    

    你的文件是这样嵌套的吗? wp 是你项目的根目录吗?

    【讨论】:

    • 感谢您的回复,我编辑了问题。运行composer install 时,会自动创建wp 文件夹和vendor
    【解决方案3】:

    截至 2019 年 1 月,Google App Engine PHP 7 Standard 中没有此类选项。

    • 可以 statically serve 只能直接部署的文件。
    • 不能 statically serve 任何文件由 composer 安装

    通过statically serve,我的意思是在您的app.yaml (read more) 中使用static_dirstatic_files 处理程序。

    此信息来自与 Google 支持代表的讨论。

    我正在等待支持团队创建功能请求,并将在此处附上链接。

    【讨论】:

    • 您的功能请求将转发给 App Engine 产品团队以进行进一步处理。您可以为the public ticket 加注星标以接收有关它的进一步更新。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-08-15
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 2016-01-22
    相关资源
    最近更新 更多