
Webアプリケーション開発において、環境変数を安全に管理することは極めて重要です。.envファイルを正しく理解し、適切に扱うことで、開発・本番環境の切り替えや機密情報の保護が可能になります。本記事では、PHPやLaravelに共通する.env設定ファイルの基本と、安全な運用のポイントを解説します。
目次
.envファイルとは?
.env
ファイルは、アプリケーションの設定情報や機密情報(DB接続情報、APIキーなど)を記述する環境変数ファイルです。以下のような特徴があります。
- プロジェクトごとに設定できる
- 本番環境と開発環境で切り替え可能
- コードベースに機密情報を残さずに済む
例:Laravelの.envファイル(一部)
APP_NAME=MyApp
APP_ENV=local
APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
APP_DEBUG=true
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=my_user
DB_PASSWORD=secret_password
例:PHPプロジェクトで使用する場合(vlucas/phpdotenvを利用)
純粋なPHPプロジェクトで.env
ファイルを使うには、vlucas/phpdotenv ライブラリの導入が便利です。Composerを使用してインストールできます。
composer require vlucas/phpdotenv
プロジェクトのルートディレクトリに.env
ファイルを配置し、以下のように読み込んで使用します。
.envファイルの例:
DB_HOST=localhost
DB_NAME=testdb
DB_USER=testuser
DB_PASS=secret
PHPスクリプト例:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Dotenv\Dotenv;
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();
$host = $_ENV['DB_HOST'];
$db = $_ENV['DB_NAME'];
$user = $_ENV['DB_USER'];
$pass = $_ENV['DB_PASS'];
try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
echo "接続成功";
} catch (PDOException $e) {
echo "接続失敗: " . $e->getMessage();
}
このように、.env
を使えば機密情報をPHPコードから分離でき、セキュリティ向上と管理の柔軟性を両立できます。
.envファイルはどこに設置する?
.env
ファイルは、**アプリケーションのルートディレクトリ(最上位フォルダ)**に設置するのが基本です。
Laravelの場合
Laravelでは、プロジェクトをインストールすると自動的に .env
ファイルがルートに生成されます。
/your-laravel-project
├── app/
├── bootstrap/
├── config/
├── public/
├── .env ← ここに設置
├── artisan
└── composer.json
public/
ディレクトリはWebからアクセス可能な公開領域であり、.env
はそこより**上の階層(非公開領域)**にあるため、直接アクセスされることはありません。
純粋なPHPプロジェクトの場合
独自構成のPHPプロジェクトでも、以下のようにWebルートとは分けて.env
を配置します。
/my-php-app
├── public_html/ ← Webからアクセスされる領域
│ └── index.php
├── config/
├── vendor/
└── .env ← Webから直接アクセスされない場所
ワンポイント
万一 .env
を public/
や public_html/
に置くと、Web経由でダウンロード・閲覧されてしまう危険性があります。ApacheやNginxでアクセス制限する方法もありますが、そもそも非公開領域に設置するのが最も安全です。
セキュアに.envファイルを運用するための注意点
.envファイルには機密情報が含まれるため、以下の点に注意する必要があります。
1. .gitignore
に.envを追加する
Gitなどのバージョン管理システムには.envを絶対にコミットしないようにします。
# .gitignore に追加
.env
.env.*
2. 本番環境ではパーミッションを制限する
Linuxサーバーでは以下のようにアクセス権を制限しましょう。
chmod 600 .env
chown www-data:www-data .env
3. .env.example
を用意する
開発者が参考にできるように、.env.example
ファイルを準備し、実際の値を抜いた状態で共有します。
APP_NAME=
APP_ENV=
DB_HOST=
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
4. 公開ディレクトリに置かない
Laravelであれば.env
はプロジェクトルートにあり、public/
からはアクセスできない設計になっていますが、独自PHP環境などではpublic_html
などに誤って配置しないよう注意が必要です。
Laravelにおける.envの活用と動的設定
Laravelでは、.env
の値は config/
ディレクトリ内の設定ファイルに自動的に適用されます。
例:config/database.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
]
.env
ファイルの値を切り替えることで、データベースの接続先を本番・開発で柔軟に変更できます。
まとめ:セキュアな.env運用でトラブルを未然に防ごう
.env
ファイルは非常に便利な仕組みですが、機密情報が含まれるため慎重な取り扱いが求められます。バージョン管理からの除外、アクセス権の制限、参考用ファイルの作成などを徹底し、安全な運用を心がけましょう。Laravelだけでなく、純粋なPHPプロジェクトでも、.env
管理を取り入れることで、環境構築や設定変更の効率が大きく向上します。

Contact
ウェブサイトの制作や運用に関わる
お悩みやご相談
お気軽にお問い合わせ下さい
ウェブサイトと一口に言っても、企業サイトやECサイト、ブログ、SNSなど、その“カタチ”は目的に応じてさまざまであり、構築方法や使用する技術も大きく異なります。株式会社コナックスでは、お客様のご要望やブランドの個性を丁寧に汲み取り、最適なウェブサイトの“カタチ”をご提案いたします。
デザイン、ユーザビリティ、SEO対策はもちろん、コンテンツ制作やマーケティング戦略に至るまで、あらゆるフェーズでお客様のビジネスに寄り添い、成果につながるウェブサイトづくりをサポートいたします。私たちは、ウェブサイトの公開をゴールではなくスタートと捉え、お客様のビジネスの成功に向けて共に伴走してまいります。