LoginSignup
1
4

More than 5 years have passed since last update.

Laravel5.x APP_KEYの変更方法

Posted at

APP_KEY、SomeRandomStringのままにしていた人のために

APP_KEYは、php artisan key:generate コマンドで適当なキーが発行されます。
tinkerでやる必要はないですが、わざわざコマンドを作成する必要もないので、すぐに対応できるtinkerで対応します。

処理の流れは、
decrypt保存(復号化) -> APP_KEY変更 -> encrypt保存(暗号化)

実行前は、必ずdumpを取ってください。
本件でデータが壊れたり、復旧できなくなった場合の対応はできかねます。

0. APP_KEYを確認する

.env
// セキュアなAPP_KEYではない
APP_KEY=SomeRandomString

1. tinkerを起動する

php artisan tinker

2. 暗号化したデータを、復号して保存

tinker

$users = App\User::all();

// 暗号化されたデータを平文に変更
foreach ($users as $user) {                                                                                                                                                                                                
    try{                                                                                                                                                                                                                               
        $user->api_key = \Illuminate\Support\Facades\Crypt::decrypt($user->api_key);                                                                                                                                             
        $user->save();                                                                                                                                                                                                            
    } catch(\Exception $e) {                                                                                                                                                                                                                
        continue;                                                                                                                                                                                                                     
    }
}

// exit 3. のAPP_KEYを使用するためにtinkerを終了する

3. APP_KEYを変更する

.env
// セキュアなAPP_KEYに変更する
// php artisan key:generate コマンドを叩くのが無難
APP_KEY=XXXXXXXXXX

4. tinkerを起動する

tinker
$users = App\User::all();

// 暗号化されたデータを平文に変更
foreach ($users as $user) {                                                                                                                                                                                                
    try{                                                                                                                                                                                                                               
        $user->api_key = \Illuminate\Support\Facades\Crypt::encrypt($user->api_key);                                                                                                                                             
        $user->save();                                                                                                                                                                                                            
    } catch(\Exception $e) {                                                                                                                                                                                                                
        continue;                                                                                                                                                                                                                     
    }
}

// exit  
1
4
0

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
1
4