【问题标题】:How to put the private key contents in dotenv .env file for lumen app?如何将私钥内容放入 dotenv .env 文件中以用于 lumen 应用程序?
【发布时间】:2019-06-12 23:56:33
【问题描述】:

我想在我的 lumen 应用程序中使用 SFTP 服务器,因此我需要将访问 SFTP 服务器的私钥存储在 .env 文件 (dotenv) 中

我试过这种方法:

SFTP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nHkVN9…\n-----END DSA PRIVATE KEY-----\n"

当我 dd(env('SFTP_PRIVATE_KEY')); 时,我得到一个空字符串

知道如何处理吗?

【问题讨论】:

  • 只是好奇,你到底为什么需要一个私钥作为字符串?只需将其保留为文件,如果您需要文件本身,请参考它。
  • 因为将我的源代码/应用程序的 SFTP 私钥凭据部分存储在 git repo 中是个坏主意。
  • 将其添加到 .gitignore?还是完全在项目之外?
  • 因为应用程序通过 AWS ECS 托管在 docker 容器中,并通过 Circleci 部署。您不会 SSH 到容器上并将私有服务器放在服务器上,因为当容器崩溃并移动到不同的集群时,这不太理想。
  • 老实说,您根本不应该在生产环境中使用 .env 文件。 .env 旨在在开发中设置环境变量(因此您可以模仿生产环境)。

标签: php environment-variables lumen phpdotenv


【解决方案1】:

好的,我已经想出了一个解决方法,如下所示:

  1. 我已经用双管替换了每条新线:||
  2. 当我通过 lumen 的 env() 函数加载环境变量的内容时,我将其替换回新行

例如我的.env

SFTP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----||HkVN9…||-----END DSA PRIVATE KEY-----||"

下面是你如何使用它:

$privateKey = env('SFTP_PRIVATE_KEY');
$privateKey = str_replace('||', PHP_EOL, $privateKey);

// Debug
echo '<pre>';
echo($privateKey);
exit;

我对此进行了测试,现在可以使用,如果有更好的方法,请告诉我。

【讨论】:

    【解决方案2】:

    PHP dotenv 版本 3 adds support 用于多行值。所以现在你可以这样做了:

    SFTP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
    HkVN9…
    -----END DSA PRIVATE KEY-----"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      • 2022-07-06
      • 2022-10-20
      • 2020-06-08
      • 2011-10-25
      • 2016-12-24
      • 1970-01-01
      相关资源
      最近更新 更多