遵循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文件中定义。
关于如何克服这个问题有什么想法吗?
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_BUCKET
、AWS_DEFAULT_REGION
、AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
。
当在vapor中运行时,这些变量在执行期间被注入到您的环境中。