php - Laravel:使用 Linode 的存储对象作为 AWS S3 的替代品
问题描述
Linode 的对象存储被标记为与 S3 兼容。知道这一点后,我认为我可以简单地在我的账户中使用 Linode 的凭据filesystems.php
并用于->disk('s3')
上传和下载文件,但显然情况并非如此。
我已经按照Laravel 文档中的建议安装了所有必需的 S3 PHP 包。
我的.env
有:
AWS_ACCESS_KEY_ID=foo
AWS_SECRET_ACCESS_KEY=bar
AWS_DEFAULT_REGION=DE
AWS_BUCKET=my-linode-storage-object.eu-central-1.linodeobjects.com
在日志中我得到例外Could not resolve host
。它试图将 AWS 端点与我在上面提供的内容连接起来,以至于它不起作用。我应该安装完全不同的包来处理 Linode 的存储对象连接吗?
我在网上没有看到太多关于如何在 Laravel 应用程序中使用 Linode 的存储对象的教程。任何链接或提示将不胜感激。
解决方案
从 laravel 文档中只需安装所需的 Composer 包之一
$ composer require league/flysystem-aws-s3-v3
不要安装 League/flysystem-cached-adapter,因为这需要更多配置。
接下来,在配置文件系统文件 config/filesystems.php 下添加一个使用 s3 驱动的新磁盘
'linode' => [
'driver' => 's3',
'key' => env('LINODE_KEY'),
'secret' => env('LINODE_SECRET'),
'endpoint' => env('LINODE_ENDPOINT'),
'region' => env('LINODE_REGION'),
'bucket' => env('LINODE_BUCKET'),
],
将新的环境变量添加到项目的 .env 文件中:
LINODE_KEY="KEYUNDERDOUBLEQUOTES"
LINODE_SECRET="SECRETUNDERDOUBLEQUOTES"
LINODE_ENDPOINT="https://eu-central-1.linodeobjects.com"
LINODE_REGION="eu-central-1"
LINODE_BUCKET="bucket-name"
我通常在“”下包含变量以确保它与符号一起使用。在 LINODE_ENDPOINT 下还包括 http 或 https。
现在你已经设置好了所有东西,你现在可以在你的 laravel 代码上使用这个磁盘 ->disk('linode')
推荐阅读
- google-chrome - Chrome 扩展程序未显示在商店中
- asp.net-web-api - Visual Studio 生成错误 项目文件不存在
- java - 两个 Android Activity 之间通过引用 Caller 或 Callee 进行通信
- c++ - 模板中可能带有 thread_local 的 clang 编译器错误
- azure - Azure B2C 重置策略(忘记密码) - 当未经授权的用户尝试访问需要授权的页面时重置屏幕
- java - 服务无法在持续的后台位置跟踪上运行
- javascript - 是任何浮点数| 0 = 固定数?
- scala - IntelliJ 无法解析符号订阅 kafka
- angularjs - Angular i18n 可以在 AngularJS 1.5 上运行吗?
- javascript - 如何存储/隐藏 JavaScript 事件并在以后重用它?