Laravel Vapor文件上传失败



遵循Laravel Vapor文档进行文件上传(https://docs.vapor.build/1.0/resources/storage.html#file-上传(,当我试图将文件从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文件中定义。

关于如何克服这个问题有什么想法吗?

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文件中启用或修改它,你也可以使用它。

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

您需要更新您的env.production或使用的任何环境

vapor env:pull production // or staging etc

把那些aws值加在那里,然后

vapor env:push production

然后部署到您的环境中,将使用您的环境变量。你的.env只是本地

要在本地使用带有vapor的S3存储,您需要在.env.中设置AWS环境变量

这些变量:AWS_BUCKETAWS_DEFAULT_REGIONAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY

当在vapor中运行时,这些变量在执行期间被注入到您的环境中。

相关内容

  • 没有找到相关文章

最新更新