【问题标题】:Laravel Vapor file upload failsLaravel Vapor 文件上传失败
【发布时间】:2021-02-27 12:47:24
【问题描述】:

按照 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 文件中定义。

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

【问题讨论】:

    标签: laravel laravel-vapor


    【解决方案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 文件中启用或修改它,您也可以使其正常工作。

    【讨论】:

    • 对于遇到类似问题的任何人 - 在像上面那样设置 variables_order 参数后,config:cachecache:clear 没有任何效果。运行 rm bootstrap/cache/config.php 后,$_ENV 变量开始被填充。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2022-08-13
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      • 2017-03-22
      相关资源
      最近更新 更多