Я борюсь со стандартной средой Google App Engine уже целый день.
Ошибка выглядит следующим образом:
PHP Notice: Exception: The /srv/bootstrap/cache directory must be present and writable. in /srv/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php:168
Я знаю, что папка /tmp
является единственной записываемой папкой для стандартной среды App Engine. Поэтому мои app.yaml
имеют следующие дополнительные env_variables
:
APP_STORAGE: "/tmp"
VIEW_COMPILED_PATH: "/tmp"
... my bootstrap/app.php
содержит эту строку:
$app->useStoragePath(env('APP_STORAGE', base_path() . '/tmp'));
... и мои composer.json
имеют следующие сценарии для учета изменений в конфигурации:
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump"
],
"post-install-cmd": [
"composer dump-autoload",
"php artisan config:clear",
"php artisan cache:clear",
"php artisan view:clear",
"php artisan cache:clear",
"php artisan regenerate:schoolCSS"
]
Это мои драйверы, настроенные в app.yaml
:
SESSION_DRIVER: database
BROADCAST_DRIVER: log
CACHE_DRIVER: database
QUEUE_DRIVER: sync
По какой-то причине я просто не могу найти способ сделать папку /tmp
папкой, в которой хранятся кэшированные представления и конфиг. На самом деле, я подозреваю, что команды ...:clear
даже не выполняются должным образом.
Мое приложение теперь просто пустая белая страница, независимо от пути. Это справедливо, так как из-за недоступного для записи кэша представления не могут быть отображены и сохранены там.
Указанные выше конфигурации должны соответствовать учебным пособиям по установке Laraval в Google App Engine Standard, таким как этот: https://cloud.google.com/community/tutorials/run-laravel-on-appengine-standard.
В облачной консоли я проверил, существует ли папка /tmp
, что имеет место.
В любом случае, вся помощь очень ценится. Если вам нужно больше фрагментов кода, просто спросите. Я буду рад предоставить их.