- 投稿日:2021-03-05T23:16:05+09:00
久しぶりにLaravel触ろうとしてすっかり忘れてた [Mac]
久しぶりにLaravel触ろうとしてすっかり忘れてたので入力コマンドを一覧にしてみた
※諸事情によりLaravel6系でやります。
Laravelのサポートについてはこちらの方が詳しく説明されています。目次
- composerが入っているかの確認
- composerでlaravelインストール
- バージョンを指定してプロジェクトを作成
- laravelの起動を確認
- MySQLの設定
- SQLiteの場合
- laravel日本語化
composerが入っているかの確認
composercomposer -v
開発環境の構築が必要な場合
Homebrewインストール
Homebrew~composer# Homebrewインストール /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # composerインストールと確認 brew install composer composer
composerでlaravelインストール
composer-laravelcomposer global require "laravel/installer"
バージョンを指定してプロジェクトを作成
composer-laravelcomposer create-project laravel/laravel "プロジェクト名" 6.* --prefer-dist
laravelの起動を確認
※ポートは任意。なくても良い
laravelcd "プロジェクト名" php artisan serve --port=8080
MySQLの設定
MySQLmysql.server start mysql -u root -p # パスを聞かれるがそのまま[enter]MySQLデータベース作成、パスワード設定create database 'データベース名'; show databases; use 'データベース名'; update mysql.user set password=password('パスワード') where user='root'; flush privileges; exit;MySQL再起動mysql.server stop mysql.server start
.envファイル変更
.env修正DB_CONNECTION=mysql DB_HOST=localhost //修正 DB_PORT=3306 DB_DATABASE='データベース名' //修正 DB_USERNAME=root DB_PASSWORD='パスワード' //修正SQLiteの場合
.env修正DB_CONNECTION=sqlite //変更 // DB_DATABASE='データベース名' //コメントアウトdatabaseディレクトリにファイル作成cd "プロジェクト名"/database touch database/database.sqlite
laravel日本語化
config/app.phpの修正
app.phpの修正'timezone' => 'Asia/Tokyo',// タイムゾーン 'locale' => 'ja', // 第一言語を日本語(ローカライゼーション) 'fallback_locale' => 'en', // 該当言語が見つからない場合の言語 'faker_locale' => 'ja_JP',ここまでで、laravel初期設定は完了です。
参考
https://qiita.com/park-jh/items/78efe8c3c93cf533aafa
https://qiita.com/S-Masakatsu/items/b231a8a02737aff6a808
- 投稿日:2021-03-05T23:16:04+09:00
Laravel8でUUIDを使用してみるよ【簡単】
UUIDを使う方法をサクッと書いていきます。
ライブラリインストール
composer require goldspecdigital/laravel-eloquent-uuid:^8.0マイグレーション
public function up() { Schema::create('article_drafts', function (Blueprint $table) { $table->id(); $table->uuid('uuid')->unique(); //以下は好きなものを書きましょう。 }); }ちなみにUUIDをプライマリキーにする人もいますが、外部キーとして使用することもある場合は、別にUUID用のカラムを作った方が良きです。
リレーれション先でも128ビットの数値をデータとして持っておくのは非効率ですからね。
UUIDの生成(データの保存)
あとは下記のように保存したい時に記述してあげればOK。
use Illuminate\Support\Str; //省略 'uuid'=>(string) Str::uuid(),idを隠す
ついでにidは隠しておくと良きです。
class Article extends Model { protected $fillable = [ 'uuid',//お好きなように ]; protected $hidden = [ 'id' //こんな感じ。 ]; }これで、idが隠れます。
- 投稿日:2021-03-05T22:42:40+09:00
【Laravel】ミドルウェアについて
今回はLaravelのミドルウェアについて解説していきます。
ミドルウェアとは
リクエストを受け取るとコントローラーの処理の前後に割り込み、独自の処理を追加する仕組みです。
基本はコントローラーですが、フォームに入力された値をチェックするような仕組みを考えた場合、送られてきた値を1つずつチェックすることは可能です。
しかし、一度に10ページ、100ページもあったら全てのページをチェックするのに効率的ではありません。そこでLaravelではコントローラーとは別に指定のアドレスにリクエストが送られてきたら、自動的に何らかの処理を行うという仕組みを用意しています。
リクエストがアクションに届く前と後に割り込んで処理を実行します。
ミドルウェアの作成
ミドルウェアの作成は、「artisan make:middleware ミドルウェア名」で作成できます。
php artisan make:middleware HelloMiddlewareHelloMiddleware.php<?php namespace App\Http\Middleware; use Closure; class HelloMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { return $next($request); } }
namespace App\Http\Middleware;
は「app」の「Http」フォルダ内にある「Middleware」フォルダの中にスクリプトファイルは置かれています。namaspaceを利用しないと正しくクラスは利用できません。handleメソッドについて
以下の部分についてです。
第一引数の$requestはリクエストの情報を管理するRequestインスタンス
が渡されます。$nextは、Closureクラスのインスタンス
です。ここで渡された$nextははクロージャ(関数名を指定せずに関数を作成できるようにするもの)になっており、これを呼び出して実行することでミドルウェアからアプリケーションへと送られるリクエストを作成できます。public function handle($request, Closure $next) { return $next($request); }HelloMiddlewareを修正
HelloMiddleware.php<?php namespace App\Http\Middleware; use Closure; class HelloMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $data = [ ['name'=>'taro','mail'=>'taro@yamada'], ['name'=>'hanaco','mail'=>'hanaco@yamada'], ['name'=>'hideto','mail'=>'hideto@yamada'], ]; $request->merge(['data'=>$data]); return $next($request); } }$request->merge(配列);
このmergeは、フォームの送信などで送られる値(inputの値)に新たな値を追加するものです。コントローラー側では$request->dataでこの値を取り出すことができます。
Kernel.phpを開き、$routeMiddlewareに代入している変数内に以下の文を追記します。
'hello' => \App\Http\Middleware\HelloMiddleware::class,これでHelloMiddlewareが登録され、利用可能になります。
ミドルウェアの実行
これを使用するには利用するミドルウェアを呼び出す処理の追記が必要になります。
これはルーティングに記載するのが一般的です。web.phpに以下を追記します。
web.php//use App\Http\Middleware\HelloMiddleware; Route::get('hello', 'HelloController@index')->middleware(HelloMiddleware::class);ミドルウェアを利用する場合は、Route::getの後にメソッドチェーンを使って、Middlewareメソッドを追加します。引数には、利用するミドルウェアクラスを指定します。
また、以下のように連続して記述することもできます。
Route::get('hello', 'HelloController@index')->middleware(HelloMiddleware::class)>middleware(HelloMiddleware::class);そしてHelloControllerアクションをとhello/index.blade.phpを以下のように編集します。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HelloController extends Controller { public function index(Request $request){ return view('hello.index',['data'=>$request->data]); } }@section('content') <p>これが本文のコンテンツです。</p> @foreach($data as $item) <tr><th>{{$item['name']}}</th><td>{{$item['mail']}}</td></tr> @endforeach @endsection
- 投稿日:2021-03-05T21:45:31+09:00
Laravel 入門 初期設定
Laravelの使い方をチュートリアル形式でまとめています。
バージョンは6.8です。解説をしながらCRUD機能を実装していきます。
Laravelのインストール
ここではcomposerというPHPのパッケージ管理システムを使用します。
以下を実行することでインストールと同時にプロジェクトを作成できます。composer create-project --prefer-dist laravel/laravel sample-project
--prefer-dist
バージョン管理を含めないでプロジェクト作成
–prefer-source
バージョン管理を含めてプロジェクト作成cd sample-project上記で作業していきます。
以下コマンドを実行して、http://127.0.0.1:8000
にアクセスすると以下の画面が表示されます。
php artisan serveLaravelプロジェクトの構成について
─── sample-project ├── app ・・・アプリケーションのプログラム部分がまとめられている。 ├── bootstrap ・・・アプリケーション実行時に最初に行われる処理のまとめ。 ├── config ・・・設定関係のファイルがまとめられている。 ├── database ・・・MigrationファイルなどDB関連 ├── public ・・・公開フォルダです。Webサーバーなどのドキュメントルートがあり、javaScriptやCSS、画像など外部にそのまま公開されるファイルはここにまとめられています。 ├── resources ・・・ビューや言語変換用ファイルなど ├── routes ・・・ルーティング用ファイルです。 ├── storage ・・・フレームワークが使用するファイルの保存場所です。ログファイルなどはここに保存されます。 ├── tests ・・・テストコード └── vendor ・・・Composerでインストールしたライブラリがまとめられています。 ├── .env ・・・動作環境に関する情報。こっちはGithubに後悔しない用です。 ├── .env.example ・・・動作環境に関する情報。こっちはGithubに公開用です。 ├── artisan ・・・artisanコマンドについて書かれています。 ├── composer.json ・・・composerの利用に関するものです。 ├── composer.json ・・・composerの利用に関するものです。 ├── phpunit.xml ・・・PHPUnitに関するもの ├── server.php ・・・サーバー起動時に利用されているプログラム。 ├── webpack.mix.js ・・・webpackというjavascriptパッケージツールで使うものです。 ├── yarn.lock ・・yarnというパッケージマネージャが使うファイルです。route:listで確認。
これでルーティングの確認ができます。
php artisan route:list +--------+----------+----------+------+---------+--------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+----------+------+---------+--------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api,auth:api | +--------+----------+----------+------+---------+--------------+ルート情報の基本
<?php Route::get('/',function(){ return view('welcome'); });
Route::get(アドレス,関数など);
第一引数に割り当てるアドレスを、第二引数にはそれによって呼び出される処理を用意します。データベース接続設定
以下は自分の環境に合わせて調整して下さい。
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=apple DB_USERNAME=apple DB_PASSWORD=secret上記の場合は、ローカルにMySQLをインストールし、appleというデータベースを作成、appleというユーザーをsecretというパスワードで作成すればOKです。
- 投稿日:2021-03-05T20:10:00+09:00
[Laravel]リレーション先のデータもファクトリでまとめて作成
概要
テストを実装している時に一対一、または一対多のテーブルの情報があり、リレーション先のデータごとまとめて
Factory
で作成したい時の方法をメモします。例えば特定のUserと紐づいたPostを作成したいときなどに使えます。
ここではファクトリでのテストデータ作成方法には触れません。
環境
Laravel v8.12
実装
一対多テーブル
User→一
Post→多Userからアクセス
Test.php$user = User::factory()->has(Post::factory())->create();Postの数を指定することもできます。
Test.php$user = User::factory()->has(Post::factory()->count(3))->create();Postからアクセス
$posts = Post::factory()->count(3) ->for(User::factory()->state([ 'name' => 'hogehoge', ]))参考文献
- 投稿日:2021-03-05T19:55:51+09:00
開発環境のLaravelアプリケーションにphp-graph-sdkを使用してFacebookログイン機能を組み込む時に詰まったこと
LaravelでFacebookログインボタンを設置して、AccessTokenを取得する処理を書きたい
とりあえず以下のライブラリを使うことに。
Dockerfileとdocker-compose.ymlを使用して開発環境を作成。
http://localhost:3000/facebook/login
でボタンを表示するようにしました。
以下にコードを記しますが、Facebookのドキュメントのまんまです。
Controllers/FacebookController.php
の一部//ログインボタンを表示する処理 public function login() { $fb = new Facebook\Facebook([ 'app_id' => '{app-id}', 'app_secret' => '{app-secret}', 'default_graph_version' => 'v2.10', ]); $helper = $fb->getRedirectLoginHelper(); $permissions = ['email']; // Optional permissions //callback先はhttp://localhost:3000/facebook/callbackに $loginUrl = $helper->getLoginUrl('http://localhost:3000/facebook/callback', $permissions); echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>'; }//callback先でAccessTokenを表示する処理 public function callback() { $fb = new Facebook\Facebook([ 'app_id' => '{app-id}', 'app_secret' => '{app-secret}', 'default_graph_version' => 'v2.10', ]); $helper = $fb->getRedirectLoginHelper(); try { //後々ここでエラー発生!!!!!!!!! $accessToken = $helper->getAccessToken(); } catch(Facebook\Exception\ResponseException $e) { echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch(Facebook\Exception\SDKException $e) { echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } $oAuth2Client = $fb->getOAuth2Client(); $tokenMetadata = $oAuth2Client->debugToken($accessToken); $tokenMetadata->validateAppId($config['app_id']); $tokenMetadata->validateExpiration(); if (! $accessToken->isLongLived()) { try { $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken); } catch (Facebook\Exception\SDKException $e) { echo "<p>Error getting long-lived access token: " . $e->getMessage() . "</p>\n\n"; exit; } echo '<h3>AccessToken</h3>'; var_dump($accessToken->getValue()); } }意気揚々とログインを実行するとエラーが発生...
エラー内容はこちらです。
Graph returned an error: Please make sure your redirect_uri is identical to the one you used in the OAuth dialog requestGoogleログインなどでもよくある、APIの管理画面でリダイレクトURLを設定忘れだと思い管理画面へアクセス。
ドキュメント読むとなんとFacebookログインのリダイレクト先はhttps必須とのこと..
2018年10月6日から、すべてのアプリでHTTPSの使用が必須になります。
しかし!!
管理画面を見てみると以下の記述がありました!
「http://localhost のリダイレクトは開発モードでのみ自動的に許可され、ここに追加する必要はありません」
開発モードの場合はhttp://localhost からもログインできる!
Facebookはリダイレクト先のhttps強制。
しかし、localhostは別とのこと。良かった!!開発モードについてはこちらを参照。
ざっくりまとめると以下のようなことが書かれている。
アプリのモードは、誰がアプリを使用できるかを決定します。
開発モードのアプリは、アプリ上の役割を持つアプリユーザー、またはアプリを主張しているビジネスの役割を持つアプリユーザーのみが使用できます。ってことは自分のアプリ開発モードになっていない説..?
調べたところ..
自分のはビジネスアプリとして作成したてのアプリだったので確かに開発モードになっていました。
厳密に言うと、ビジネスアプリで作成したアプリには開発モードという概念は無いそうですが、一般に公開をしていない限り開発モードと同じらしい。新しく作成されたアプリはすべて開発モードでスタートし、アプリの開発が完了するまでライブモードに切り替えないでください。
ビジネスアプリにはアプリモードがなく、同じ機能を提供するアクセスレベルに依存していることに注意してください。ということはなぜリダイレクトエラー出るの??解決法
エラーが出ている箇所は上記のFacebookController.phpの
callback()
内の以下の一文でした。
$accessToken = $helper->getAccessToken();
結論ですが、以下のようにcallback先のURLを明示的に渡してあげると解決しました。
$accessToken = $helper->getAccessToken(url(/facebook/callback)'); or $accessToken = $helper->getAccessToken(http://localhost:3000/facebook/callback);なぜこの方法で解決できた??
ライブラリ内の
getAccessToken()
を覗いてみます。こちらの行に関数が書かれています。
getAccessToken()の引数はnullを渡しても、ログインボタンに埋め込まれているURLからリダイレクトして、現在地のURLをよしなに取得してくれるはず。
//ログインボタンの所はこう書きました $loginUrl = $helper->getLoginUrl('http://localhost:3000/facebook/callback', $permissions); echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';//ライブラリの中身抜粋 (現在地からURLを取得してくれる処理) $redirectUrl = $redirectUrl ?: $this->urlDetectionHandler->getCurrentUrl(); $redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl, ['code', 'enforce_https', 'state']); echo $redirectUrlこの関数を手元で実行してみると....
以下が返ってきました。ポート番号の:3000が消えてる...これだとredirectUrlが確かに一致していません。理想は以下のURLを返したい
さらに探っていくと原因が分かりました。
ポート番号を取得する処理はこんな感じで書かれていました。$port = isset($_SERVER["HTTP_X_FORWARDED_PORT"]) ? $_SERVER["HTTP_X_FORWARDED_PORT"] : '';これを実行すると、
''
が返ってきました。
$_SERVER["HTTP_X_FORWARDED_PORT"]
に値が入っていないようです。HTTP_X_FORWARDED_PORTがよく分かっていないですが、、調べてみると
If you are serving from behind a proxy server, you will almost certainly save time by looking at what these $_SERVER variables do on your machine behind the proxy.
日本語訳: プロキシサーバの後ろからサービスを提供している場合、これらの $_SERVER 変数がプロキシの後ろのマシンで何をしているかを見れば、ほぼ確実に時間を節約することができます。
X-Forwarded-Port リクエストヘッダーは、ロードバランサーへの接続にクライアントが使用した送信先ポートを識別するために役立つそうです。
なるほど、今回はDockerを使っています。ポート番号3000をブラウザのURLの入力欄に入力すると、nginxの80番にポートフォワードするようにしています。プロキシサーバーは使用していないので、
$_SERVER["HTTP_X_FORWARDED_PORT"]
に値が入っていないのですね。おそらく。
$port = isset($_SERVER["HTTP_X_FORWARDED_PORT"]) ? $_SERVER["HTTP_X_FORWARDED_PORT"] : $_SERVER["HTTP_HOST"];
こう書くと"localhost:3000"を返してくれますが..
どうするのがベストなのだろう??ということでプロキシサーバーを使用せずに、このライブラリを使用したFacebookログイン機能で詰まるかもしれません。
そんな場合は以下のように書いてみてください!
$accessToken = $helper->getAccessToken(url(/facebook/callback)'); or $accessToken = $helper->getAccessToken(http://localhost:3000/facebook/callback);以上です。
コメントや指摘等お待ちしております。
- 投稿日:2021-03-05T16:33:13+09:00
Laravel はじめました [1. 環境構築]
Java エンジニアですが仕事で使うので Laravel を勉強してみました。
要件
- PHP 5.6
- Laravel 3
- MySQL 5.7
- Apache 2.4
開発環境
- macOS Big Sur
- VSCode
ローカル環境構築
mac に php 5.6 をインストール
$ brew install php@5.6
- 上記でいけると思ったら、Homebrew で php 5.6 のサポートは切れているとのこと
サードパーティ製のリポジトリからインストールした
- 参考
- やる場合は自己責任でお願いします
$ brew tap exolnet/homebrew-deprecated $ brew install php@5.6VSCode に 以下プラグインを追加
- Laravel Artisan
- Laravel Brade Snippets
- Laravel goto view
- Laravel Snippets
- PHP Debug
- PHP IntelliSense
ローカル PC に PHP をインストールするつもりはない
リモート環境構築
どうせなら docker 上で動かそうと思い、 github をウロウロしました。
かなり素晴らしいリポジトリを発見したので、 fork させていただきました。
- fork 元は ucan-lab/docker-laravel
- くわしい解説は 最強のLaravel開発環境をDockerを使って構築する を参照
- fork 元より以下を修正
- nginx ではなく apache を使用する
- php, laravel, mysql をダウングレード
- 使わなそうなコマンド等を削除
構成
- app
- php と apache が稼働するコンテナ
- db
- MySQL が稼働するコンテナ
- 一応コンテナを落としても中身は残るようにしてある
使い方
初回 (Laravel プロジェクトを作成する)
$ git clone git@github.com:sosobl/env-laravel.git $ cd env-laravel $ make create-project # Install the latest Laravel project $ make install-recommend-packages # Not required2 回目以降 (docker コンテナだけ起動する)
$ git clone git@github.com:sosobl/env-laravel.git $ cd env-laravel $ git clone git@github.com:laravel/laravel.git docker-laravel/backend # Clone any project to the backend directory $ make init説明は割愛します
- 一応自分なりに理解できるまでソースは読みました
- が、説明を記述するほどの余力は残りませんでした
- fork 元よりステップ数は減っているので、お暇があれば読んでみてくだちい
改善点
Laravel のバージョンが正しくなかった
- ver3 をインストールしたかったが、composer では動かないとのこと
- github の v3 タグ からダウンロードするしかない
ローカルの IDE(VSCode) から docker コンテナ上で稼働する php へのデバッグ方法が未検討
- 投稿日:2021-03-05T16:31:39+09:00
LaravelのMySQLデータベースをXAMPPからDockerに切り替え
自分はこのやり方でできたという記録用です。私はXAMPPを使っていましたが、Dockerに切り替えたいと思います。
既にアプリの中身は完成している状態から始めます。プロジェクトのターミナルでDocker imageをダウンロード
docker pull mysqlmysqlサーバーを立てる
docker run --name mysql-server -e MYSQL_ROOT_PASSWORD="admin" -d -p 53306:3306 mysqlmysqlへログイン
mysql -uroot -padmin -h 127.0.0.1 -P 53306XAMPPで作成していたデータベースをDockerのmysqlでも作成します。
新しいデータベースをXAMPPのものと同じように作り変えます。php artisan migrate:freshエラー
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')
認証方式を変えます。
SELECT user, host, plugin FROM mysql.user; //私の結果 +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | root | % | caching_sha2_password | | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | caching_sha2_password | +------------------+-----------+-----------------------+私の場合rootの二つを変えました。
alter user 'root'@'%' identified with mysql_native_password by 'pass'; alter user 'root'@'localhost' identified with mysql_native_password by 'pass';envファイルを書き換えます。
DB_CONNECTION=mysql DB_HOST=localhost //変更 DB_PORT=53306 //変更 DB_DATABASE=database_name //自分が新しく作ったデータベース名 DB_USERNAME=root DB_PASSWORD=pass //先程のパスワードここまでできたらマイグレーションします。
php artisan migrate:freshphp artisan serveと打つとデータベースにデータが入っていない状態で立ち上がると思います。シーダーファイルの中身を入れます。
php artisan db:seedこれでデータベースの移行が完了しました。
参考
https://tyablog.net/2017/06/10/docker-setup-mysql/
https://symfoware.blog.fc2.com/blog-entry-2160.html
- 投稿日:2021-03-05T15:28:30+09:00
Laravel セットアップ中つまづいたことメモ
エラー1. No application encryption key has been specified.
これはencryption keyを設定しないと出るエラーです。
が、php artisan key:generate
でキーを生成しても出続けるエラーに困惑しました解決方法
configのキャッシュが効いているのが原因でした。
$ php artisan config:clearでキャッシュをクリアすると無事このエラーが解消されました。
参照:エラー"No application encryption key has been specified."が出るとき
エラー2. The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.
エラー文を読む限り、サポートされている記号でないですよ!と怒られているよう。
色々調べてみると、どうやらbootstrapフォルダのパーミッションの問題らしい。
ls -l で調べてみるとdrwxr-xr-x
となっていたので、$ chmod 775 bootstrapでパーミッションを変更。
そしてkeyをgenerateしてキャッシュをクリアすれば無事表示されました。
$ php artisan key:generate $ php artisan config:clear
- 投稿日:2021-03-05T13:28:37+09:00
【Laravel】Seedデータファイルを作るコマンド
php artisan make:seeder UserTableSeederUSerTableSeeder.phpファイルをつくることができる。
<?php use Illuminate\Database\Seeder; class USerTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // } }コマンドで作られたファイルの中身はこのような記述になっている.
- 投稿日:2021-03-05T10:16:19+09:00
Laravelについての認識
Laravelのインストール場所
今まではPC本体にLaravelをインストールするものだと考えていましたが、Laravelinstallerを用いて作成したプロジェクト自体にLaravelが存在するらしい。
つまりWord等のソフトウェアとしてインストールするわけではない。
Laravelを利用する = Laravelinstallerを用いてLaravelの組み込まれたプロジェクトを作る
Laravelinstaller ≒ Laravel
的な感じ?