php - Laravel:使用 Linode 的存储对象作为 AWS S3 的替代方案

标签 php laravel amazon-web-services amazon-s3 linode

Linode 的 Object Storage 标记为 与 S3 兼容 .知道这一点后,我认为我可以在 filesystems.php 中简单地使用 Linode 的凭据。并使用 ->disk('s3')上传和下载文件,但显然情况并非如此。

我已经按照 Laravel's docs 中的建议安装了所有必需的 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')

关于php - Laravel:使用 Linode 的存储对象作为 AWS S3 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61407039/

相关文章:

php - 在 laravel 中访问动态数据库

security - 亚马逊网络服务 : Setting S3 policy to allow putObject and getObject but deny listBucket

php - Auth()::user() 在 Laravel 中的多重身份验证中不起作用

php laravel - 模型中 php 文件的更改未反射(reflect)在输出中

php - 安装 phabricator 时无法连接到 mysql

javascript - 如何正确格式化 JSON

amazon-web-services - 如何从 Serverless(Cloud Formation)迁移到 AWS CDK(云开发工具包)

ios - Swift 2 ios 9 提示 http 即使我使用 https 连接到 amazon s3

php - 是否可以从 SQL Server 创建文本格式的列表,然后由 PHP Cron 作业处理?

javascript - ajax简单的js变量到php