如何将私钥内容放入 dotenv .env 文件中以用于 lumen 应用程序?
Posted
技术标签:
【中文标题】如何将私钥内容放入 dotenv .env 文件中以用于 lumen 应用程序?【英文标题】:How to put the private key contents in dotenv .env file for lumen app? 【发布时间】: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 旨在在开发中设置环境变量(因此您可以模仿生产环境)。 【参考方案1】:好的,我已经想出了一个解决方法,如下所示:
-
我已经用双管替换了每条新线:
||
当我通过 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-----"
【讨论】:
以上是关于如何将私钥内容放入 dotenv .env 文件中以用于 lumen 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章