Google App Engine - PHP - Служить статическим файлам из Composer - WordPress

У меня есть очень простое приложение на App Engine, настроенное на PHP 7.2.

В официальной документации по установке WP на GAE PHP 7.2 они написали скрипт, который копирует файлы WordPress, а затем вы фиксируете и развертываете их.

Эта конфигурация композитора использует johnpbloch/wordpress вместе с composer/installers, чтобы загрузить и установить WordPress для wp папка на composer install так что мне не нужно ни фиксировать, ни развертывать этот код.

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' оно работает.

НО это не будет обслуживать статические файлы. Переход на URL, как <project>.appspot.com/wp-includes/images/media/audio.png возвращает 404.

Есть идеи?

3 ответа

По состоянию на январь 2019 года в Google App Engine PHP 7 Standard такой опции нет.

  • Вы можете statically serve только файлы, которые вы непосредственно разверните.
  • Вы не можете statically serve любые файлы, установленные композитором.

От statically serveЯ имею в виду использовать static_dir или же static_files обработчики в вашем app.yaml ( читать дальше).

Эта информация получена в результате обсуждения с представителем службы поддержки Google.

Я жду, когда команда поддержки создаст запрос на добавление функции, и прикреплю ссылку здесь.

Ваш app.yaml ссылается wp/ каталог, тогда как ваш URL ищет wp-includes/ каталог. Подробности смотрите в документации по static_files.

Как ваш app.yaml настроен, вызов <project>.appspot.com/wp-includes/images/media/audio.png постараюсь загрузить из каталога:

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

Это способ, которым ваши файлы вложены? Это wp каталог в корне вашего проекта?

Другие вопросы по тегам