laravel 动态修改.env文件实现配置项改变(非str_contains)

废话:

网站查debug每次都要到服务器改文件嫌弃麻烦,想日一个动态修改.env文件的小功能

自己又懒惰,在网上找的代码,复制过来就开始用(能复制绝不手写)

复制的代码如下

public function language(){

    $data=['lang'=>request('lang')];

    $envPath = base_path() . DIRECTORY_SEPARATOR . '.env';



    $contentArray = collect(file($envPath, FILE_IGNORE_NEW_LINES));



    $contentArray->transform(function ($item) use ($data){

        foreach ($data as $key => $value){

            if(str_contains($item, $key)){

                return $key . '=' . $value;

            }

        }



        return $item;

    });



    $content = implode($contentArray->toArray(), "\n");



    \File::put($envPath, $content);
    return redirect()->back();

}

这个也说明了是修改语言用的,我没看就复制进去达到修改.env文件其他配置,测试的时候发现很漂亮可以用,我尝试改APP_NAME 一看也可以改,仔细一看

 看了一下代码 感觉是这个函数引起的

str_contains()
str_contains: 判断字符串中是否包含特定的多个字符

包含了就换,修改带有NAME的配置全变成一样的,这样可不行的呀!修改后的代码是这样的,乱日了一下

        //$data是要修改的内容
        //$data=['APP_NAME'=>$input['APP_NAME'],'APP_URL'=>$input['APP_URL']]
        $envPath = base_path() . DIRECTORY_SEPARATOR . '.env';
        $contentArray = collect(file($envPath, FILE_IGNORE_NEW_LINES));
        foreach ($contentArray as $key=>$value) {
            if ($value == '') {
                $key='';
            } else {
                $cont = explode('=', $value);
                if (array_key_exists($cont[0], $data)) {
                    $contentArray[$key] = $cont[0].'='.$data[$cont[0]];
                } else {
                    $contentArray[$key] =  $cont[0].'='.$cont[1];
                }
            }
        }
        $content = implode($contentArray->toArray(),"\n");
        \File::put($envPath, $content);
        return redirect()->back();

这样就不会和上面的代码一样出错了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值