趣味でも仕事でも一人で開発してることが多いから個人的な恩恵は少なめなのが悲しい。ざんねん。
前提
laravelの最新バージョンにphp artisan env:***
というコマンドが追加されていた。
追加されたのはv9.32.0(New 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
おまけ
復号派ですか?復号化派ですか?