【发布时间】:2020-08-09 08:16:59
【问题描述】:
我整天都在尝试将我的 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
(...)
我遵循了question、tutorial 和issue 的所有提示,但似乎有任何帮助。
作为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 文件夹is the only writable folder for the App Engine Standard Environment. 考虑到这一点,我将上面的内容放在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
此外,除了视图未呈现之外,我注意到当尝试加载位于 /public 文件夹的 favicon.ico 时,它会返回 500 错误。我是 AppEngine 的新手,但即使阅读了我能找到的所有内容,我也一直在努力让它发挥作用。非常感谢任何帮助。
【问题讨论】:
-
base_path()的内容是什么?因为它应该是空的 ("") 让环境变量APP_STORAGE到/tmp
标签: php laravel google-app-engine caching google-app-engine-php