検索
ホームページPHPフレームワークLaravellaravelで.envを変更する方法

laravel で .env を変更する方法: 1. "base_path('.env');" を通じて env ファイルのパスを取得します; 2. "function updateEnv($data = array())" を通じて宣言します{}" 関数; 3. "$pattern = '/([^\=]*)\=[^\n]*/';" 正規一致により、env ファイルを変更して解析します。

laravelで.envを変更する方法

このチュートリアルの動作環境: Windows 7 システム、Laravel バージョン 5.7、Dell G3 コンピューター。

laravel で .env を変更するにはどうすればよいですか?

Laravel は env 環境変数の値を動的に変更します。

はじめに

開発環境、オンライン環境、その他の機能を区別するために設定パラメータを分離したり、キャッシュドライバー、キュードライバー、メールサーバーアドレスなどを手動で切り替えるため. など、これらに簡単にラベルを付けることができます。したがって、laravel は .env ファイルを使用して、キーと値のペアであるこれらの構成データをラップします。

学習時間

通常の状況では、手動で処理しない限り、env ファイルの内容を変更することはできません。しかし、プログラミングでは変更が必要な状況が避けられないため、env ファイル内のキーと値のペアを動的に操作するにはどうすればよいでしょうか?

key:generate を使用してシステムによって生成された APP_KEY が安全ではないことを想定し、自動デプロイメントおよびバッチ デプロイメントを実行する場合、APP_KEY キーを動的に変更する必要があります。これを達成するにはどうすればよいでしょうか?

実際、env ファイルは単なるテキスト ファイルであり、key=value などの標準形式で記述され、改行文字が終わるまでは 1 行で文字列マッチングが使用されます。

env ファイルの内容を変更するということは、関連するキーを見つけて値を置き換えるだけです。

最初のバージョンは、単純かつ粗雑な file_put_contents です。まず、env ファイルのパスを取得します:

$path = base_path('.env');

ファイルが存在するかどうかを確認する必要があります:

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

ファイルは存在します 次に、最初にファイルのすべての内容を文字列変数に読み取ります:

$origin = file_get_contents($path);

新しい APP_KEY が変数 $new_key に存在すると仮定し、最初に元の APP_KEY 値を取得します:

$old_key = env('APP_KEY');

String もちろん、文字列置換関数を使って直接照合する必要があるので、str_replaceを使用しますが、結局、envファイルのデータ量は多くないので、パフォーマンスに大きな問題はありません。

$result = str_replace('APP_KEY=' . $old_key, $new_key, $origin);

このように、最新のenvファイルの値が$resultに格納されるので、後はenvファイルを書き込むだけです:

file_put_contents($result);

デフォルトでは上書きなので、プログラム実行後、 env ファイルは動的に変更された最新のデータになります。

さらに詳しく見る

基本的にエラー処理がないため、簡単にエラーが発生する可能性があるため、上記のコードにはまだ欠陥があります。さらに、env と同じくらい重要なファイル操作の場合、文字列置換を直接使用してファイル全体を読み取り、上書きすることは本質的に危険です。

運用方法をより安全なものに変えるにはどうすればよいでしょうか?もっと互換性のあるコードが必要です。このセクションでは、env ファイルを解析し、1 行ずつ読み取り、1 行ずつ操作し、1 行ずつ判断するために正規のマッチングを使用してみます。キー値が存在する場合は上書きされ、存在しない場合は上書きされます。存在すれば作成されます。これにより、新規機能と更新機能の両方に対応でき、サポートされるキー値がより柔軟になります。

渡されるパラメーターが配列および連想配列であると想定して、ヘルパー関数としてカプセル化されます。関数を次のように宣言します。

function updateEnv($data = array()){}

関数本体にロジックを記述し、最初に空でないことを確認します。

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

連想配列でない場合も受け入れられません。 env ファイルではキーと値を明確に指定する必要があります。連想配列の場合、配列のキーが自動的にシリアル化されたキーと異なることを確認するだけで済みます。

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

一致するパターンを準備します。

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

これは、env を記述するための形式です。ファイル。前のセクションですでに紹介しました。古い env ファイルを配列に読み取り、最新の構成ファイル データを保存するための新しい配列を宣言します。

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

次に、古いファイル データを走査し、行ごとに解析します。

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

上記これは大まかな処理の流れですが、この解析処理はカスタム関数や他の解析エンジンとして独自にカスタマイズできるため、汎用的です。

最後に、新しい解析済みデータを env ファイルに完全に書き込みます:

$newContent = implode('', $newLines);
file_put_contents($envFile, $newContent);

この時点で、env ファイルの更新操作は完了です。

最後に書きました

この記事では、env グローバル設定ファイルのデータを動的に作成および更新する機能をプログラム内で 2 つの方法で実装しています。2 番目の方法の方がフォールト トレランスと汎用性が優れています。拡張性が高いのでおすすめです。最初のアプローチにはエラー処理がないため、運用環境ではほとんど使用できません。誰もがその考えを知ってくれれば素晴らしいでしょう。

推奨学習: 「laravel ビデオ チュートリアル

以上がlaravelで.envを変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
インクルージョンの幻想:リモートワークにおける孤立と孤独への対処インクルージョンの幻想:リモートワークにおける孤立と孤独への対処Apr 25, 2025 am 12:28 AM

トコンバティソルメントアンドロネリネスは、レモであり、regultionを実現し、等間grothopportunitionを提供し、効率的に使用します

フルスタック開発のためのLaravel:包括的なガイドフルスタック開発のためのLaravel:包括的なガイドApr 25, 2025 am 12:27 AM

laravelispopopularfulfull-stackdevelopment becuseiTOfferseamlessbbackEndpowendPowerandfflexibility.1)simplifyDatabaseItteractions.2)asbladetemplatingEngineallowsforclean、dynamictmltemplates.3)Laravelmix

ビデオ会議対決:リモート会議に適したプラットフォームを選択するビデオ会議対決:リモート会議に適したプラットフォームを選択するApr 25, 2025 am 12:26 AM

ビデオ会議プラットフォームを選択する際の重要な要因には、ユーザーインターフェイス、セキュリティ、および機能が含まれます。 1)ズームなど、ユーザーインターフェイスは直感的である必要があります。 2)セキュリティに注意を払う必要があり、Microsoftチームはエンドツーエンドの暗号化を提供します。 3)機能は要件を一致させる必要があり、Googlemeetは短い会議に適しており、Ciscowebexは高度なコラボレーションツールを提供します。

最新のLaravelと互換性のあるデータベースバージョンは何ですか?最新のLaravelと互換性のあるデータベースバージョンは何ですか?Apr 25, 2025 am 12:25 AM

Laravel10の最新バージョンは、MySQL 5.7以降、PostgreSQL 9.6以降、SQLite 3.8.8以降、SQLServer 2017以降と互換性があります。これらのバージョンは、クエリとストレージの効率を向上させるMySQL5.7のJSONデータ型など、LaravelのORM機能をサポートするため選択されます。

Laravelをフルスタックのフレームワークとして使用することの利点Laravelをフルスタックのフレームワークとして使用することの利点Apr 25, 2025 am 12:24 AM

laravelisanexcellentchoicefulfulffull stackdevelopmentduetoitsotsobustfeaturesofuse.1)そのImprifiescomplextaskswithnphpsynthenphpsynpsuls likebladeforfront-dandeloquentormforback-end.2)laravelmixandartisantystemを拡張するlaravedecosystem

Laravelの最新バージョンは何ですか?Laravelの最新バージョンは何ですか?Apr 24, 2025 pm 05:17 PM

laravel10、releaseonfebruary7,2023、isThelateStversion.itfeatures:1)改善された改善とnewReportmethexceptionhandler、2)拡張サプロポートフォーフプP8.1FeatureslikeNums、and3)

最新のLaravelバージョンはどのように開発を簡素化しますか?最新のLaravelバージョンはどのように開発を簡素化しますか?Apr 24, 2025 pm 05:01 PM

ThelatestlaravelversionEnhancesDevelopments:1)SimplifiedRoutingImplicitModelbinding、2)EnhancedEloquentCapabilitiesWithNewQueryMethods、and3)supportformdernphpeaturesliekenamedarguments、makedingdingingindenjoyableを改善しました。

最新のLaravelバージョンのリリースノートはどこにありますか?最新のLaravelバージョンのリリースノートはどこにありますか?Apr 24, 2025 pm 04:53 PM

laravel.com/docsで最新のLaravelバージョンのリリースノートを見つけることができます。 1)リリースノート新しい機能、バグの修正、改善に関する詳細情報を提供します。 2)新しい機能の適用を理解するのに役立つ例と説明が含まれています。 3)新機能の潜在的な複雑さと後方互換性の問題に注意してください。 4)リリースノートの定期的なレビューは、それを更新し続け、イノベーションを刺激することができます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。