使用 PHP 更新 .env 值
Update .env value using PHP
我知道有些人可能认为这会导致安全问题。
但是...
我只想更新 2
个特定的标志,因为有时我想查看报告,有时又不想。如果我有办法更新这些标志——只要我想通过电子邮件或短信查看报告,我就可以通过 Apple iPhone 快捷方式连接一条路线来切换该功能。
我试过了
创建了一条路线
Route::get('/env/{flag}/{value}','GeneralController@envUpdate');
叫它
http://localhost/env/MAIL_REPORT/false
将触发此功能
public function setEnv($key, $val)
{
$path = base_path('.env');
if (file_exists($path)) {
file_put_contents($path, str_replace(
$key . '=' . env($key), $key . '=' . $val, file_get_contents($path)
));
}
}
public function envUpdate($flag,$value)
{
//dd($flag,$value);
$allow_flags = ["MAIL_REPORT", "SMS_REPORT"];
if (in_array($flag, $allow_flags))
{
setEnv((string)$flag, (string)$value);
return env(env((string)$flag));
}
}
我一直收到 true
因为在我的 .env 中似乎没有更新
MAIL_REPORT=true
我想 MAIL_REPORT=false
注意:我已经运行:sudo chmod 777 .env
如何进一步调试它?
如果您需要更改环境变量,我建议您只更改 .env
文件并重新缓存您的配置(如果在生产环境中)。您当前的实施可能对安全问题非常敏感。
如果您确实想在 运行 时以编程方式更改环境变量,您始终可以使用 config()
辅助方法。
config(['mailing. reporting' => false]);
这也记录在 docs 中。
编辑
所以我认为您对环境变量的实现可能有点不正确。在您的应用程序中,环境变量本身不应在 运行 时间更改。唯一应该调用 env()
函数的地方是在配置文件中(位于 config
目录中)。所以你想要的是在你的 config/mailing.php
配置文件中创建一个新密钥。
'reporting' => env('MAIL_REPORT', false),
现在,无论何时您需要将此变量设置为 true,您都可以更改 .env
文件或使用第一个给定的示例 (config(['mailing. reporting' => false]);
)。
在 docs 阅读更多相关信息。
我知道有些人可能认为这会导致安全问题。
但是...
我只想更新 2
个特定的标志,因为有时我想查看报告,有时又不想。如果我有办法更新这些标志——只要我想通过电子邮件或短信查看报告,我就可以通过 Apple iPhone 快捷方式连接一条路线来切换该功能。
我试过了
创建了一条路线
Route::get('/env/{flag}/{value}','GeneralController@envUpdate');
叫它
http://localhost/env/MAIL_REPORT/false
将触发此功能
public function setEnv($key, $val)
{
$path = base_path('.env');
if (file_exists($path)) {
file_put_contents($path, str_replace(
$key . '=' . env($key), $key . '=' . $val, file_get_contents($path)
));
}
}
public function envUpdate($flag,$value)
{
//dd($flag,$value);
$allow_flags = ["MAIL_REPORT", "SMS_REPORT"];
if (in_array($flag, $allow_flags))
{
setEnv((string)$flag, (string)$value);
return env(env((string)$flag));
}
}
我一直收到 true
因为在我的 .env 中似乎没有更新
MAIL_REPORT=true
我想 MAIL_REPORT=false
注意:我已经运行:sudo chmod 777 .env
如何进一步调试它?
如果您需要更改环境变量,我建议您只更改 .env
文件并重新缓存您的配置(如果在生产环境中)。您当前的实施可能对安全问题非常敏感。
如果您确实想在 运行 时以编程方式更改环境变量,您始终可以使用 config()
辅助方法。
config(['mailing. reporting' => false]);
这也记录在 docs 中。
编辑
所以我认为您对环境变量的实现可能有点不正确。在您的应用程序中,环境变量本身不应在 运行 时间更改。唯一应该调用 env()
函数的地方是在配置文件中(位于 config
目录中)。所以你想要的是在你的 config/mailing.php
配置文件中创建一个新密钥。
'reporting' => env('MAIL_REPORT', false),
现在,无论何时您需要将此变量设置为 true,您都可以更改 .env
文件或使用第一个给定的示例 (config(['mailing. reporting' => false]);
)。
在 docs 阅读更多相关信息。