cari
Rumahrangka kerja phpLaravelBagaimana untuk mengubah suai .env dalam laravel

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');

Anda perlu menentukan sama ada fail itu wujud:

if (file_exists($path)){
    // 文件存在
}

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

$origin = file_get_contents($path);

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

$old_key = env('APP_KEY');

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);

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

file_put_contents($result);

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()){}

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

if (! count($data)) {return;}

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;}

Sediakan corak yang sepadan:

$pattern = '/([^\=]*)\=[^\n]*/';

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 = [];

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;
}

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);

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!

Kenyataan
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
Beyond the Zoom Call: Strategi Kreatif untuk Menghubungkan Pasukan TeragihBeyond the Zoom Call: Strategi Kreatif untuk Menghubungkan Pasukan TeragihApr 26, 2025 am 12:24 AM

Toenhanceengagementandcohesionamongdistributedteamsbeyondzoom, pelaksanaanTheseStregies: 1) Organizirtualcoffeebreaksforinformalchats, 2) Useasynchronoustoolslikeslackfornon-workdiscussions, 3) identgamificoWithteamgames

Apakah perubahan pecah dalam versi Laravel terkini?Apakah perubahan pecah dalam versi Laravel terkini?Apr 26, 2025 am 12:23 AM

Laravel10introducesseveralbreakingchanges: 1) itrequiresphp8.1orhigher, 2) therouteserviceProvidernowuseSabootmethforloadingRoutes, 3) thewithTimeStamps () methodeNeloquentRelationShipsisdePrecated, dan 4)

Paradoks Produktiviti: Mengekalkan Fokus dan Motivasi dalam Tetapan JauhParadoks Produktiviti: Mengekalkan Fokus dan Motivasi dalam Tetapan JauhApr 26, 2025 am 12:17 AM

TomaintainfocusandmotivationInremotework, createAstructureDenvironment, managedigitaldistractions, fostermotivationthroughsocialIntionsandgoalsetting, containstwork-lifebalance, anduseapproprateetechnology.1) SetupadedicationWorksPaceAndSticktoaroutine.

Membina Kepercayaan Dari Afar: Memupuk Kerjasama dalam Persekitaran TeragihMembina Kepercayaan Dari Afar: Memupuk Kerjasama dalam Persekitaran TeragihApr 26, 2025 am 12:13 AM

TofostercollaborationandTrustinremoteteams, ExplectionTheSestrated: 1) menubuhkan, StructuredCommunicationWithPersonalCheck-ins, 2) useCollaborativeToolSfortransparency, 3) pengiktirafan dan 4) fosteracultureoftrustandadaptability.

Apakah ciri -ciri utama versi Laravel terkini?Apakah ciri -ciri utama versi Laravel terkini?Apr 26, 2025 am 12:01 AM

Versi terbaru dari ciri -ciri utama Laravel termasuk: 1. Ciri -ciri ini meningkatkan kecekapan pembangunan dan prestasi aplikasi, tetapi perlu digunakan dengan berhati -hati untuk mengelakkan masalah yang berpotensi.

Ilusi kemasukan: menangani pengasingan dan kesepian dalam kerja terpencilIlusi kemasukan: menangani pengasingan dan kesepian dalam kerja terpencilApr 25, 2025 am 12:28 AM

Tocombatisolationandlonelinessinremotework, companesshouldimplementregular, articlefulinteractions, provideequalgrowthopposities, andusetechnologyefectively.1) FostergenuineconnectionnectionThoughvoughvirtualcoffeebreaksandpersonalusharing.2) Ensureremorsharing

Laravel untuk pembangunan penuh: panduan komprehensifLaravel untuk pembangunan penuh: panduan komprehensifApr 25, 2025 am 12:27 AM

Laravelispopularforfull-stackdevelopmentbeCausofersaseamlessblendofbackendpowerandfrontendflexibility.1) ITSBackendCapabilities, likeeloquentorm, SimplifyDatabaseIntions.2) thebladetemplatingengineAllowsforclean, dynamichtmltes.3)

Pertunjukan Persidangan Video: Memilih platform yang sesuai untuk mesyuarat jauhPertunjukan Persidangan Video: Memilih platform yang sesuai untuk mesyuarat jauhApr 25, 2025 am 12:26 AM

Faktor utama dalam memilih platform persidangan video termasuk antara muka pengguna, keselamatan, dan fungsi. 1) Antara muka pengguna harus intuitif, seperti zoom. 2) Keselamatan perlu diberi perhatian, dan pasukan Microsoft menyediakan penyulitan akhir-ke-akhir. 3) Fungsi perlu memadankan keperluan, GoogLemeet sesuai untuk mesyuarat pendek, dan Ciscowebex menyediakan alat kerjasama lanjutan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma