を使用することが可能であるテストからこれを行っているので、テストされていないこれで遊ん後の最終的なソリューションです。
マイコントローラ:
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Storage;
class TestController extends Controller
{
public function index() {
// Values I want to insert
$data = [
'APP_KEY' => str_random(32),
'DB_HOST' => 'localhost',
'DB_DATABASE' => 'lara_test',
'DB_USERNAME' => 'root',
'DB_PASSWORD' => ''
];
// default values of .env.example that I want to change
$defaults = ['SomeRandomString', '127.0.0.1', 'homestead', 'homestead', 'secret'];
// get contents of .env.example file
$content = file_get_contents(base_path() . '/.env.example');
// replace default values with new ones
$i = 0;
foreach ($data as $key => $value) {
$content = str_replace($key.'='.$defaults[$i], $key.'='.$value, $content);
$i++;
}
// Create new .env file
Storage::disk('root')->put('.env', $content);
// run all migrations
Artisan::call('migrate');
// run all db seeds
Artisan::call('db:seed');
dd('done');
}
}
新しいディスクドライバ:
プロジェクトのルートに新しいファイルを作成するには、私は新しいディスクドライバを作成する必要がありました。私は私のconfig/app.php
ファイルに次のコードを追加しました:
'disks' => [
.....
'root' => [
'driver' => 'local',
'root' => base_path(),
],
],
、これは使用してルートに新しいファイルを作成するために私を有効に:
Storage::disk('root')->put('filename', $content);
概要:
だから基本的に私が取得しています.env.exampleファイルの内容を変更し、必要な定数の値を変更して、新しい.envファイルを作成します。その後、すべてのマイグレーションとシードを実行しました。
注:私は手動のでNo supported encrypter found. The cipher and/or key length are invalid.私は、コード内のすべてのものをやろうとしておりますので
、ないコマンドによる愚かなエラーのAPP_KEY
を設定する必要がありました - 私はArtisan::call('key:generate');
を使用してみましたが、いくつかの奇妙な理由のために、それこの問題を解決するためにはうまくいかなかったため、32ビットの長さのランダムな文字列を手動で作成し、APP_KEY
と設定する必要がありました。
これは他の人に役立つことを願っています。 :) そして、@rypskarのおかげで助けになりました。
ヘルプメイトに感謝します。 – Jazzbot