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
каталог в корне вашего проекта?