Rumah > rangka kerja php > Laravel > Bagaimana untuk mengubah suai .env dalam laravel

Bagaimana untuk mengubah suai .env dalam laravel

藏色散人
Lepaskan: 2022-12-12 10:18:04
asal
2068 orang telah melayarinya

Cara mengubah suai .env dalam laravel: 1. Dapatkan laluan fail env melalui "base_path('.env');"; 2. Deklarasikan melalui "function updateEnv($data = array()) {}" Fungsi; 3. Ubah suai dan huraikan fail env melalui "$pattern = '/([^=]*)=[^n]*/';" padanan biasa.

Bagaimana untuk mengubah suai .env dalam laravel

Persekitaran pengendalian tutorial ini: sistem Windows 7, Laravel versi 5.7, komputer Dell G3.

Bagaimana untuk mengubah suai .env dalam laravel?

Laravel mengubah suai nilai pembolehubah persekitaran env secara dinamik!

Pengenalan

Untuk memisahkan parameter konfigurasi untuk membezakan persekitaran pembangunan, persekitaran dalam talian dan fungsi lain, atau untuk menukar pemacu cache, pemacu baris gilir dan alamat pelayan mel secara manual , Dsb., dsb., ini boleh dilabelkan dengan mudah. Jadi laravel menggunakan fail .env untuk membungkus data konfigurasi ini, yang merupakan pasangan nilai kunci.

Masa pembelajaran

Dalam keadaan biasa, kami tidak dibenarkan mengubah suai kandungan fail env melainkan ia diproses secara manual. Walau bagaimanapun, dalam pengaturcaraan, tidak dapat dielakkan untuk menghadapi situasi yang mesti diubah suai Jadi bagaimana untuk mengendalikan pasangan nilai kunci secara dinamik dalam fail env?

Andaikan APP_KEY yang dijana oleh sistem menggunakan key:generate tidak selamat Apabila melakukan penempatan automatik dan penggunaan kelompok, terdapat keperluan untuk mengubah suai kunci APP_KEY secara dinamik. Bagaimana untuk mencapai ini?

Malah, fail env hanyalah fail teks, ditulis dalam format standard seperti key=value, menggunakan padanan rentetan di seluruh, dengan satu baris sehingga aksara baris baharu berhenti.

Kemudian mengubah suai kandungan fail env tidak lebih daripada mencari kunci yang berkaitan dan kemudian menggantikan nilai, itu sahaja.

Versi pertama diberikan di bawah, iaitu file_put_contents yang ringkas dan kasar, mula-mula dapatkan laluan fail env:

$path = base_path('.env');
Salin selepas log masuk

Anda perlu menentukan sama ada fail itu wujud:

if (file_exists($path)){
    // 文件存在
}
Salin selepas log masuk

Jika fail wujud, mula-mula baca semua kandungan fail ke dalam pembolehubah rentetan:

$origin = file_get_contents($path);
Salin selepas log masuk

Andaikan APP_KEY baharu kami wujud dalam pembolehubah $new_key, mula-mula dapatkan yang asal Nilai APP_KEY:

$old_key = env('APP_KEY');
Salin selepas log masuk

Sudah tentu, operasi rentetan memerlukan pemadanan langsung menggunakan fungsi penggantian rentetan Kami menggunakan str_replace Jumlah data dalam fail env tidaklah besar, jadi tiada prestasi yang besar masalah.

$result = str_replace('APP_KEY=' . $old_key, $new_key, $origin);
Salin selepas log masuk

Dengan cara ini, nilai fail env terkini disimpan dalam $result Kemudian tulis sahaja fail env:

file_put_contents($result);
Salin selepas log masuk

Lalainya ialah untuk menulis ganti, jadi. program dilaksanakan , fail env ialah data yang diubah suai secara dinamik.

Pergi lebih dalam

Kod di atas masih cacat, kerana pada dasarnya tiada pengendalian ralat, yang boleh menyebabkan ralat dengan mudah. Di samping itu, untuk operasi fail yang sama pentingnya dengan env, secara langsung menggunakan penggantian rentetan untuk membaca dan menulis ganti keseluruhan fail sememangnya berisiko.

Bagaimanakah kita boleh mengubah cara kita beroperasi untuk menjadikannya lebih selamat? Kami memerlukan kod yang lebih serasi. Dalam bahagian ini, kami cuba menggunakan pemadanan biasa untuk menghuraikan fail env, membacanya baris demi baris, mengendalikannya baris demi baris dan menilainya jika nilai kunci wujud, ia akan ditimpa jika tidak wujud, ia akan dicipta. Dengan cara ini, ia boleh serasi dengan kedua-dua fungsi baharu dan kemas kini, dan nilai kunci yang disokong adalah lebih fleksibel.

dirangkumkan sebagai fungsi pembantu, dengan mengandaikan bahawa parameter yang dihantar adalah tatasusunan dan ia adalah tatasusunan bersekutu. Isytihar fungsi seperti berikut:

function updateEnv($data = array()){}
Salin selepas log masuk

Tulis logik dalam badan fungsi, semak dahulu jika ia tidak kosong:

if (! count($data)) {return;}
Salin selepas log masuk

Jika ia bukan tatasusunan bersekutu, ia juga tidak diterima, kerana fail env mesti menyatakan dengan jelas kunci dan nilai. Untuk tatasusunan bersekutu, anda hanya perlu menentukan bahawa kunci tatasusunan berbeza daripada kunci bersiri secara automatik:

if (array_keys($data) === range(0, count($data) - 1)) {return;}
Salin selepas log masuk

Sediakan corak yang sepadan:

$pattern = '/([^\=]*)\=[^\n]*/';
Salin selepas log masuk

Ini ialah format untuk menulis fail env. Kami telah memperkenalkannya di bahagian sebelumnya. Kami membaca fail env lama ke dalam tatasusunan dan mengisytiharkan tatasusunan baharu untuk menyimpan data fail konfigurasi terkini:

$envFile = base_path() . '/.env';
$lines = file($envFile);
$newLines = [];
Salin selepas log masuk

Kemudian melintasi data fail lama dan menghuraikannya baris demi baris:

foreach ($lines as $line) {
    preg_match($pattern, $line, $matches);
    if (!count($matches)) {
        $newLines[] = $line;
        continue;
    }
    if (!key_exists(trim($matches[1]), $data)) {
        $newLines[] = $line;
        continue;
    }
    $line = trim($matches[1]) . "={$data[trim($matches[1])]}\n";
    $newLines[] = $line;
}
Salin selepas log masuk

Perkara di atas hanyalah aliran pemprosesan kasar Proses penghuraian ini boleh disesuaikan secara bebas sebagai fungsi tersuai atau enjin penghuraian lain, jadi ia bersifat universal.

Akhir sekali, tulis data yang dihuraikan baharu sepenuhnya ke dalam fail env:

$newContent = implode('', $newLines);
file_put_contents($envFile, $newContent);
Salin selepas log masuk

Pada ketika ini, operasi kemas kini fail env selesai.

Ditulis pada penghujung

Artikel ini melaksanakan fungsi mencipta dan mengemas kini data fail konfigurasi global secara dinamik dalam program dalam dua cara Kaedah kedua adalah lebih tahan terhadap kesalahan dan serba boleh. mempunyai kebolehskalaan yang kuat, jadi kami mengesyorkannya. Pendekatan pertama tidak mempunyai pengendalian ralat dan hampir tidak boleh digunakan dalam persekitaran pengeluaran. Alangkah baiknya jika semua orang tahu idea itu.

Pembelajaran yang disyorkan: "tutorial video laravel"

Atas ialah kandungan terperinci Bagaimana untuk mengubah suai .env dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan