我的 Laravel 应用程序在 Google Cloud 上出现问题。无法打开流或文件“/srv/storage/logs/laravel.log”
Posted
技术标签:
【中文标题】我的 Laravel 应用程序在 Google Cloud 上出现问题。无法打开流或文件“/srv/storage/logs/laravel.log”【英文标题】:my Laravel application has a problem on Google Cloud. The stream or file "/srv/storage/logs/laravel.log" could not be opened 【发布时间】:2019-06-04 07:25:19 【问题描述】:laravel 应用程序在我的本地运行良好。
但是当我使用命令gcloud app deploy
将其上传到 Google App Engine 时。然后它给我写日志的错误。
UnexpectedValueException
The stream or file "/srv/storage/logs/laravel.log" could not be opened: failed to open stream: Read-only file system
代码是我的 laravel 应用根目录下的 app.yaml 文件。
版权所有 2015 Google Inc. 保留所有权利。
运行时:php72
api_version: 1
线程安全:真
运行时配置: document_root:公共
处理程序: - 网址:/favicon.ico 静态文件:public/favicon.ico 上传:public/favicon.ico
网址:.* 脚本:自动env_variables: # 取消注释以下内容以启用调试模式。
APP_DEBUG: 0
APP_LOG:错误日志 APP_KEY: base64:nzd12xL4YtD3fIKYYRc/NGIfA+phk39fGJrvq11UBug= APP_LOG_LEVEL:调试 STORAGE_DIR: /tmp
DB_HOST: '' DB_USERNAME: '' DB_PASSWORD: '' DB_DATABASE: ''
CACHE_DRIVER:内存缓存 SESSION_DRIVER:内存缓存 MAIL_DRIVER: '邮件' LOG_DRIVER: '系统日志'
STORAGE_PATH: 'gs://#default#/laravel/storage'
enter image description here
【问题讨论】:
After installing Laravel, you may need to configure some permissions. Directories within the storage and the bootstrap/cache directories should be writable by your web server or Laravel will not run. If you are using the Homestead virtual machine, these permissions should already be set.
Read-Only File System after Upgrade Kernel under CentOS 7的可能重复
File permissions for Laravel 5 (and others)的可能重复
【参考方案1】:
您需要按照这些说明中的步骤 (1) 和 (3) 重写 Laravel 存储内容的位置:
https://cloud.google.com/community/tutorials/run-laravel-on-appengine-standard
简单地说-
第一步,在app.yaml中需要添加:
APP_STORAGE: /tmp
然后在第 3 步中让 Laravel 使用它。通过在 return 语句之前添加以下代码块来修改 bootstrap/app.php。这将允许您将存储路径设置为 /tmp 以在生产中进行缓存。
# [START] Add the following block to `bootstrap/app.php`
/*
|--------------------------------------------------------------------------
| Set Storage Path
|--------------------------------------------------------------------------
|
| This script allows you to override the default storage location used by
| the application. You may set the APP_STORAGE environment variable
| in your .env file, if not set the default location will be used
|
*/
$app->useStoragePath(env('APP_STORAGE', base_path() . '/storage'));
# [END]
【讨论】:
以上是关于我的 Laravel 应用程序在 Google Cloud 上出现问题。无法打开流或文件“/srv/storage/logs/laravel.log”的主要内容,如果未能解决你的问题,请参考以下文章
如何在 google firebase 上托管我的 laravel 项目
在 Google Cloud 中使用 Laravel 8 的 Docker 容器的 503“服务不可用”
连接需要具有 ssl 模式的 laravel google cloud postgres 中的有效客户端证书