Masayan tech blog.

  1. ブログ記事一覧>
  2. phpdotenvでPHPプロジェクトの秘匿情報を環境変数として管理する

phpdotenvでPHPプロジェクトの秘匿情報を環境変数として管理する

公開日

環境

  • windows10
  • DockerDesktop for Win 3.5.x
  • phpdotenv 5.4
  • PHP 8.x
  • VsCode
  • gitbash 2.32.0.1

phpdotenvの何がうれしいのか

プロジェクトのセキュリティを高めることができる。

具体的には、パスワードやAPIキーなどを.envで環境変数化し、.gitignoreを併用することで、ソースコードに直接記述せずに済むことにより、秘匿情報を保護することが可能。

なお、Laravelでの環境変数はenv()により取得できるが、これもphpdotenvをベースに構成されている。

'url' => env('DATABASE_URL'),

イメージ

秘匿情報は.envに記述する

WEBHOOK_URL = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

.envで指定した環境変数を取り出して使用する

Sample.php

<?php
use Dotenv\Dotenv;

// createImmutable()内で.envのパスを指定する
$dotenv = Dotenv::createImmutable(__DIR__ . '../');
$dotenv->load();

// $ENV[]で環境変数を取り出すことが可能
$webhookUrl = $_ENV['WEBHOOK_URL'];

設定手順

composerでphpdotenvをインストールする

composer require vlucas/phpdotenv

あとは使う側のクラス等で取り出して使用する

Sample.php

<?php use Dotenv\Dotenv;
// createImmutable()内で.envのパスを指定する 
$dotenv = Dotenv::createImmutable(__DIR__ . '../'); 
$dotenv->load();

// $ENV[]で環境変数を取り出すことが可能
$webhookUrl = $_ENV['WEBHOOK_URL'];

一番重要なこととして、.gitignoreに.envを追加するのを忘れずに..

.env

ちなみに、Laravelでは環境変数を取得したりするためclass(vendor\laravel\framework\src\Illuminate\Support\Env.php)があり、いちいちDotenv::createImmutableなどをしなくても環境変数を取り出せるようになっています。

まとめ

いかがでしたでしょうか。本記事では、phpdotenvでPHPプロジェクトの秘匿情報を環境変数として管理することでセキュリティ性を高める方法について紹介しています。秘匿情報を誤ってGithub等のソース管理サービスにアップしないためにも、とても有効な機能ですのでぜひ参考にしてみてください。