【问题标题】:Open .env with file_get_contents使用 file_get_contents 打开 .env
【发布时间】: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


【解决方案1】:

您可以使用base_path helper (documentation) 获取.env 文件的绝对路径,例如:

>>> base_path('.env');
=> "C:\ProjectDir\.env"

为了更方便地编辑.env文件,我推荐你使用像jackiedo/dotenv-editor这样的包,它允许你在几行代码中修改环境文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2020-10-02
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多