1

遵循 Laravel Vapor 文件上传文档(https://docs.vapor.build/1.0/resources/storage.html#file-uploads),当我尝试将文件从 localhost 上传到 S3 时遇到以下错误:

POST http://localhost:8000/vapor/signed-storage-url 500 (Internal Server Error)

laravel 日志声明如下:

Unable to issue signed URL. Missing environment variables: AWS_BUCKET, AWS_DEFAULT_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY at Http\\Controllers\\SignedStorageUrlController.php:107

所有这些环境变量都在 .env 文件中定义。

关于如何克服这个问题的任何想法?

4

2 回答 2

1

Laravel Vapor 使用 $_ENV 数组来读取环境变量。我的是空的:

dd($_ENV) = []

经过一番研究,我发现必须将 php.ini 设置为允许/启用 PHP 从 -env 设置 $_ENV 变量。我的本地 php-fpm Docker 开发设置默认禁用此功能。我只需要更新 variables_order = "EGPCS" 以允许这种情况发生,然后 Vapor 就可以正常工作。

 && sed -E -i -e "s/variables_order.*/variables_order = \"EGPCS\"/g" "$PHP_INI_DIR/php.ini"

我正在使用 Docker,但我假设如果你在本地 php.ini 文件中启用或修改它,你也可以让它工作。

于 2021-03-15T16:14:59.593 回答
0

在 Vapor 仪表板或 cli 的机密区域内设置 AWS_BUCKET、AWS_DEFAULT_REGION、AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY。

于 2021-01-04T16:25:41.017 回答