Развертывание приложения Laravel 6 в Google App Engine Стандартная ошибка: укажите действительный путь к кешу

Я весь день пытался развернуть свое приложение Laravel 6 в стандартной среде Google App Engine, но, похоже, я просто застрял в том, как заставить работать кеш и некоторые локальные файлы.

Это ошибка, которую я получаю, когда пытаюсь загрузить любую страницу:

(1/1) InvalidArgumentException
Please provide a valid cache path.

in Compiler.php line 36
at Compiler->__construct(object(Filesystem), false)
in ViewServiceProvider.php line 92
at ViewServiceProvider->Illuminate\View\{closure}(object(Application), array())
in Container.php line 799
at Container->build(object(Closure))
in Container.php line 681
at Container->resolve('blade.compiler', array(), true)
in Application.php line 785

(...)

Я следил за всеми советами в этом вопрос, это руководство и это проблема, но мне казалось, что все помогло.

Как CACHE_DRIVER, для удобства я пытаюсь просто использовать file вместо database или что-то еще. Итак, у моего app.yaml есть дополнительный env_variables:

 CACHE_DRIVER: file
 SESSION_DRIVER: cookie
 APP_STORAGE: /tmp
 VIEW_COMPILED_PATH: /tmp
 APP_SERVICES_CACHE: /tmp/services.php
 APP_PACKAGES_CACHE: /tmp/packages.php
 APP_CONFIG_CACHE: /tmp/config.php
 APP_ROUTES_CACHE: /tmp/routes.php

Я знаю, что /tmp папка является единственной доступной для записи папкой для Стандартная среда App Engine. Имея это в виду, я поместил указанное выше в app.yaml и даже попытался переименовать папку /storage в /tmp. Я добавил в свой bootstrap/app.php файл следующую строку:

$app->useStoragePath(env('APP_STORAGE', base_path() . '/tmp'));

В моих пакетах композитора я убедился, что в нем нет facade/ignition. Кроме того, поскольку я не могу выполнить никакую команду после развертывания моего приложения в Google App Engine, в composer.json у меня есть:

        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump"
        ],
        "post-install-cmd": [
            "composer dump-autoload",
            "php artisan config:clear",
            "php artisan view:clear",
            "php artisan cache:clear"
        ]

Я также пытался поставить post-install-cmd php artisan storage:link, используя $app->useStoragePath(env('APP_STORAGE', base_path() . '/storage')); и папку /storage как сам storage, но ничего не получилось.

У меня есть все дерево папок для кеширования в моей /temp (или /storage, если это правильно) папке:

/tmp
    /framework
        /cache
            /data
        /sessions
        /testing
        /views
    /logs
    /medialibrary
        /temp

Кроме того, помимо того, что представления не отображаются, я заметил, что при попытке загрузить favicon.ico, расположенный в папке /public, он возвращает ошибку 500. Я новичок в AppEngine, но даже читая все, что смог найти, я изо всех сил пытался заставить его работать. Я очень ценю любую помощь.


person Gustavo Aguiar    schedule 09.08.2020    source источник
comment
Какое содержание base_path()? потому что он должен быть пустым (""), чтобы переменная env от APP_STORAGE до /tmp   -  person Juancki    schedule 10.08.2020


Ответы (3)


Я выяснил, что у меня есть некоторые файлы конфигурации, опубликованные на /config, и, помимо изменения /bootstrap/app.php, у некоторых из них был собственный путь к папке /storage. Итак, мое решение просто отказалось от использования кеша файлов, а для кеша представлений и некоторых других пакетов, которые у меня были, используйте путь /tmp в соответствующих файлах конфигурации. Кроме того, я удалил все ремесленные команды очистки кеша из композитора, так как я не отправлял файлы кеша для развертывания.

Кроме того, мне нужно было внести некоторые изменения, чтобы иметь доступ к файлам /public, например некоторым локальным CSS и js. Для этого я выполнил эти документы.

person Gustavo Aguiar    schedule 10.08.2020
comment
Это сработало для вас? У меня была такая же проблема, и я борюсь в течение дня :( - person codezero11; 16.11.2020

Сегодня я боролся с той же проблемой, и решение заключалось в том, что я изменил значение 'compiled' в config / view.php на корневую папку:

  1. Перейти в корневой каталог.
  2. mkdir compiled_views
  3. Измените значение 'compiled' на 'compiled' => realpath(base_path('compiled_views/')),
person codezero11    schedule 16.11.2020

Я решил это, явно добавив APP_STORAGE env в config/view.php:

'compiled' => realpath(env('APP_STORAGE', realpath(storage_path('framework/views')))),

(что удивляет, потому что у меня $app->useStoragePath(env('APP_STORAGE', base_path() . '/storage')); добавлено к app.php, но кажется, что он еще (?) не переопределил storage_path)

person VoordeMensen    schedule 12.12.2020