LoginSignup
5
3

More than 1 year has passed since last update.

php artisan env:***で.envファイルを暗号化 / 復号

Last updated at Posted at 2022-10-13

趣味でも仕事でも一人で開発してることが多いから個人的な恩恵は少なめなのが悲しい。ざんねん。

前提

laravelの最新バージョンにphp artisan env:***というコマンドが追加されていた。
追加されたのはv9.32.0New env:encrypt and env:decrypt commands

$ php artisan list
Laravel Framework 9.35.1
~~~

env
  env:decrypt            Decrypt an environment file
  env:encrypt            Encrypt an environment file

~~~

.envファイルを暗号化/復号出来るコマンドで、.envのデータをバージョン管理に含めたり、環境変数の共有を楽に行うために使えるらしい。

env:encrypt(暗号化)

php artisan env:encryptは.envファイルの暗号化を行います。

$ php artisan env:encrypt

   INFO  Environment successfully encrypted.

  Key ........................... base64:GW0IlxjauR28cLyrpngio8n9t38+KftI+GUd8h+7gh4=
  Cipher ................................................................ AES-256-CBC
  Encrypted file ..................................................... .env.encrypted

暗号化され出力されたファイルはEncrypted fileとして表示されます。(↑の場合は .env.encrypted

オプション

暗号化方式やキーは--cipherオプションや--keyオプションを使用して指定することが可能です。

$ php artisan env:encrypt --cipher=*** --key=***

ERROR Encrypted environment file already exists. のエラーが表示された場合は--forceオプションを付け既存のファイルを上書き指定することで解消されます。

$ php artisan env:encrypt --force

--envオプションは暗号化する.envファイルを指定することが可能です。
例えば、.env.localを暗号化する際は下記になります。

php artisan env:encrypt --env=local

   INFO  Environment successfully encrypted.

  Key ........................... base64:1X2FMrmvY5ISMXDQ0utoogiTmwBTzvq4ar1dYTEV7ac=
  Cipher ................................................................ AES-256-CBC
  Encrypted file ............................................... .env.local.encrypted

env:decrypt(復号)

php artisan env:decrypt.env.encryptedファイルの復号を行います。

$ php artisan env:decrypt --key=base64:*** --force

   INFO  Environment successfully decrypted.

  Decrypted file ............................................................... .env

オプション

--forceオプションは常につけておいてもいい気がします。
(消してはいけない.envが上書きされないように注意)

--keyオプションには暗号化時に取得したKeyをbase64: のプレフィックスも含めて指定してください。
もし暗号化時に暗号化方式も指定していた場合は、同様に--cipherオプションの指定が必要です。

env:encryptと同様に--envオプションで.envファイルの指定が可能です。
加えて、env:decryptでは--filenameオプションで復号後のファイル名を指定することも可能です。

# .env.local.encryptedを復号し、.env.localが出力される
$ php artisan env:decrypt --key=base64:*** --force --env=local

# .env.test.encryptedを復号し、.env.tmpが出力される
$ php artisan env:decrypt --key=base64:*** --force --env=test --filename=.env.tmp

おまけ

復号派ですか?復号化派ですか?

5
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3