【发布时间】:2020-05-28 20:45:22
【问题描述】:
我有一个控制面板,用户可以在其中编辑 API 密钥和秘密密钥,只需更新两个输入字段。没关系,但问题是我需要编辑 Laravel 的 .env 文件。
我有这个代码:
$path_to_file = url('.env');
$file_contents = file_get_contents($path_to_file);
$file_contents = str_replace("\nH",",H",$file_contents);
file_put_contents($path_to_file,$file_contents);
我知道替换的工作原理,但路径如何?因为如果我使用 url() 它会说错误,如果我不再使用它就会出错。我想知道如何在 laravel 框架中使用 file_get_contents 打开 .env。
谢谢
【问题讨论】:
-
如果必须可编辑,我不建议在您的 env 文件中存储 Tease api 密钥。而是将它们存储在数据库中。
-
但是如果我存储在数据库中,我怎样才能在配置文件中获取它们? @jobvink 我的意思是在 app/config.php 我有两个变量需要编辑它们是 env('api_key') 和 env('secret_key') 这些值来自 .env 我如何从数据库中获取它们?因为在配置文件中,laravel 不必在那里进行查询
-
你当然可以做到这一点,但这并不简单。您可以使用 laravel 内置的引导功能。您可以在此处阅读有关此主题的更多信息:medium.com/@DarkGhostHunter/… 和 laravel.com/docs/7.x/lifecycle
-
与@jobvink 一样,我不建议建立允许用户编辑
.env文件的功能。聪明的用户可能会想出一些方法来读取或写入您不想要的其他 ENV 值,这可能会使您的应用程序或服务器暴露于某种漏洞。如果您控制正在读取配置的代码,那么您应该能够对其进行调整以从更受保护的来源(例如@jobvink 建议的数据库)接收值。
标签: laravel