Bagaimana 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.
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Operasi pangkalan data dalam PHP dipermudahkan menggunakan ORM, yang memetakan objek ke dalam pangkalan data hubungan. EloquentORM dalam Laravel membolehkan anda berinteraksi dengan pangkalan data menggunakan sintaks berorientasikan objek Anda boleh menggunakan ORM dengan mentakrifkan kelas model, menggunakan kaedah Eloquent atau membina sistem blog dalam amalan.

Analisis alat ujian unit PHP: PHPUnit: sesuai untuk projek besar, menyediakan fungsi yang komprehensif dan mudah dipasang, tetapi mungkin bertele-tele dan perlahan. PHPUnitWrapper: sesuai untuk projek kecil, mudah digunakan, dioptimumkan untuk Lumen/Laravel, tetapi mempunyai fungsi terhad, tidak menyediakan analisis liputan kod dan mempunyai sokongan komuniti terhad.

Versi terkini Laravel 9 dan CodeIgniter 4 menyediakan ciri dan penambahbaikan yang dikemas kini. Laravel9 menggunakan seni bina MVC dan menyediakan fungsi seperti migrasi pangkalan data, pengesahan dan enjin templat. CodeIgniter4 menggunakan seni bina HMVC untuk menyediakan penghalaan, ORM dan caching. Dari segi prestasi, corak reka bentuk berasaskan pembekal perkhidmatan Laravel9 dan rangka kerja ringan CodeIgniter4 memberikannya prestasi cemerlang. Dalam aplikasi praktikal, Laravel9 sesuai untuk projek kompleks yang memerlukan fleksibiliti dan fungsi berkuasa, manakala CodeIgniter4 sesuai untuk pembangunan pesat dan aplikasi kecil.

Laravel - Perintah Artisan - Laravel 5.7 hadir dengan cara baharu untuk merawat dan menguji arahan baharu. Ia termasuk ciri baharu untuk menguji arahan artisan dan demonstrasi disebut di bawah?

Bandingkan keupayaan pemprosesan data Laravel dan CodeIgniter: ORM: Laravel menggunakan EloquentORM, yang menyediakan pemetaan hubungan kelas-objek, manakala CodeIgniter menggunakan ActiveRecord untuk mewakili model pangkalan data sebagai subkelas kelas PHP. Pembina pertanyaan: Laravel mempunyai API pertanyaan berantai yang fleksibel, manakala pembina pertanyaan CodeIgniter lebih ringkas dan berasaskan tatasusunan. Pengesahan data: Laravel menyediakan kelas Pengesah yang menyokong peraturan pengesahan tersuai, manakala CodeIgniter mempunyai kurang fungsi pengesahan terbina dalam dan memerlukan pengekodan manual peraturan tersuai. Kes praktikal: Contoh pendaftaran pengguna menunjukkan Lar

Untuk pemula, CodeIgniter mempunyai keluk pembelajaran yang lebih lembut dan ciri yang lebih sedikit, tetapi meliputi keperluan asas. Laravel menawarkan set ciri yang lebih luas tetapi mempunyai keluk pembelajaran yang lebih curam. Dari segi prestasi, kedua-dua Laravel dan CodeIgniter berprestasi baik. Laravel mempunyai dokumentasi yang lebih luas dan sokongan komuniti yang aktif, manakala CodeIgniter lebih ringkas, ringan dan mempunyai ciri keselamatan yang kukuh. Dalam kes praktikal membina aplikasi blog, EloquentORM Laravel memudahkan manipulasi data, manakala CodeIgniter memerlukan lebih banyak konfigurasi manual.

Apabila memilih rangka kerja untuk projek besar, Laravel dan CodeIgniter masing-masing mempunyai kelebihan mereka sendiri. Laravel direka untuk aplikasi peringkat perusahaan, menawarkan reka bentuk modular, suntikan pergantungan dan set ciri yang berkuasa. CodeIgniter ialah rangka kerja ringan yang lebih sesuai untuk projek kecil hingga sederhana, menekankan kelajuan dan kemudahan penggunaan. Untuk projek besar dengan keperluan yang kompleks dan bilangan pengguna yang ramai, kuasa dan kebolehskalaan Laravel adalah lebih sesuai. Untuk projek atau situasi mudah dengan sumber terhad, keupayaan pembangunan CodeIgniter yang ringan dan pantas adalah lebih ideal.

Unit PHP dan Panduan Pengujian Penyepaduan Pengujian Unit: Fokus pada satu unit kod atau fungsi dan gunakan PHPUnit untuk mencipta kelas kes ujian untuk pengesahan. Ujian integrasi: Beri perhatian kepada cara berbilang unit kod berfungsi bersama, dan gunakan kaedah setUp() dan tearDown() PHPUnit untuk menyediakan dan membersihkan persekitaran ujian. Kes praktikal: Gunakan PHPUnit untuk melaksanakan ujian unit dan penyepaduan dalam aplikasi Laravel, termasuk mencipta pangkalan data, memulakan pelayan dan menulis kod ujian.
