【Macユーザー向け 】Laravelをインストールする方法
- laravelを勉強したい
- laravelを簡単にインストールする方法が知りたい
- Homesteadがうまく動かずイライラする
PHPを勉強してきてLaravelを使ってみたい、という人も多いと思います。フレームワークを使うことで効率的にプログラミングが行えます。
Laravelは難しいんじゃないの?と思うかもしれませんが、私自身完全に初心者から始めて扱えるようになっています。
この記事を読むことで一からLaravelを始める方法が分かります。(ちなみに、Macユーザー向けですのでご注意ください。)
【Macユーザー向け 】Laravelのインストールの方法
Laravelを動かす環境としてHomesteadとValetがあります。HomesteadはVagrantやVirtual Boxなどが必要で少しややこしくなるので今回はValetを使っていきます。(Homesteadは過去に私が行った時にはなぜかJavascriptが機能しませんできした。)
では、まずはLaravelをインストールするために必要なものをインストールしていきます。
- PHP
- MySQL
- Composer
PHPのインストール
PHPとはLaravelを動かすためのプログラミング言語です。
まずはPHPがインストールされているか確認しましょう。
Macには「Terminal」というアプリが入っているのでそこで下記の呪文を打ち込みます。
php -v
もし、PHPがインストールされていない、もしくはphp 7.2.5よりも古い、というメッセージが出てきた場合はインストールします。そのためには「Homebrew」をお勧めします。
赤い枠で囲った部分をTerminalに入力します。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Homebrewを使ってもPHPがインストールされているか確認できます。
brew search php
この呪文を入力すると下記のようなメッセージがでます。
mbp:sample user$ brew search php
==> Formulae
brew-php-switcher php-cs-fixer phplint phpstan
php php@7.2 ✔ phpmd phpunit
php-code-sniffer php@7.3 phpmyadmin
==> Casks
homebrew/cask/eclipse-php homebrew/cask/netbeans-php
インストールされているものには✔︎マークがついています。上記の例ではphp7.2がインストールされているのが分かります。
PHPをインストールする必要がある場合は下記の呪文を入力してください。
brew install php@7.2
MySQLのインストール
MySQLとはプログラムを動かすときに使うデータベースです。他にもデータベースがありますが、MySQLをお勧めします。
PHPと同じようにMySQLをインストールしていきます。
まずはMySQLがあるかの確認です。
brew search mysql
下記のようなメッセージが出ます。
mbp:sample user$ brew search mysql
==> Formulae
automysqlbackup mysql-client@5.7 mysql-search-replace
mysql ✔ mysql-connector-c++ mysql@5.6
mysql++ mysql-connector-c++@1.1 mysql@5.7
mysql-client mysql-sandbox mysqltuner
==> Casks
homebrew/cask/mysql-connector-python homebrew/cask/navicat-for-mysql
homebrew/cask/mysql-shell homebrew/cask/sqlpro-for-mysql
homebrew/cask/mysql-utilities
mysqlがインストールされているので✔︎がついていますね。
✔︎がついてない場合は下記の呪文を入力します。
brew install mysql
Composerのインストール
ComposerとはLaravelを機能させるために必要なパッケージを簡単にインストールしてくれるものです。
Composerのページに移動してDownloadをクリックします。
下記のような画面に行くとComposerをインストールするためには赤枠の呪文を入力しなさい、と書かれているので4行全てコピーしてTerminalに貼り付けます。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
少し止まったように見える時もありますが気長に待ちます。
Composerが無事にインストールされたかは下記の呪文で確認できます。
composer
下記のようになれば成功です。
mbp:sample user$ composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.10.1 2020-03-13 20:34:27
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
--no-plugins Whether to disable plugins.
しかし、この状態ではsampleディレクトリでしかcomposerが使えません。そこで下記の呪文でcomposer.pharを/usr/local/bin/composerに移動させます。これでどのディレクトリからでもcomposerを使うことができるようになります。
mv composer.phar /usr/local/bin/composer
適当なディレクトリに移動して再びcomposerを入力して、先ほどと同じ画面が出てきたら完成です。
Laravelのインストール
詳しくはLaravelのホームページを参照してください。
下記のようなページに行くので赤枠のDocumentを参照します。
laravelはプロジェクトごとにlaravel newという呪文を使ってプロジェクトを作ります。そのため、laravelのインストーラーをパソコンの中に入れておいて必要な時にlaravel newを唱えます。
laravelのインストーラーの設置
インストーラーの設置の仕方ですが下記の呪文を唱えます。
composer global require laravel/installer
次にインストーラーをどこからでも使えるようにPATHを通します。
まずは確認をします。下記の呪文でPATHが通っているか確認できます。おそらく、PATHは通っていません。
echo $PATH
DocumentにMacユーザーは$HOME/.composer/vendor/binにPATHを通しなさい、と書いてあるので/etc/pathsの中身を変えていきます。
その前に$HOMEがどこを指しているのかは下記の呪文で調べます。
echo $HOME
多くの場合は/Users/userかと思います。
/etc/pathsの中身は下記の呪文で変えれます。
sudo vim /etc/paths
パスワードを聞かれますが、パソコンにログインするときのパスワードです。
ここで i を押すと編集モードになります。
最後の行に$HOME/.composer/vendor/binを加えて esc で編集モードを終了します。保存する時は ZZ を使います。($HOMEには echo $HOME で出てきたものを記入します。)
もう一度、echo $PATH で確認してみましょう。$HOME/.composer/vendor/bin が増えているのがわかるかと思います。また、下記の呪文でも確認できます。
ls $HOME/.composer/vendor/bin
laravel があるのが確認できると思います。
これでlaravelをインストールできるようになりました。
laravelのインストール
どこに、インストールするかですがオススメはlaravel用の親プロジェクトを作ってそこにインストールする、という形です。
親プロジェクトで下記の呪文を唱えることでlaravelがインストールできます。
laravel new ’プロジェクト名’
cd ’プロジェクト名’ でプロジェクトに移動し、下記の呪文を唱えます。
php artisan serve
これで http://~ にアクセスできますと出てきますのでブラウザにコピペします。
下記のような画面が出てきたら成功です。
artisan serveをしている間はターミナルの作業ができなくなるので、ターミナルで作業するというときにはControl+Cを押しましょう。
つまずき
laravel new “プロジェクト名”でインストールがうまくいかない
mbp:code user$ laravel new training
Crafting application...
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for mockery/mockery 1.4.0 -> satisfiable by mockery/mockery[1.4.0].
- mockery/mockery 1.4.0 requires php ^7.3.0 -> your PHP version (7.2.29) does not satisfy that requirement.
Problem1を読んで見るとphpのバージョンが7.2.29ではなく7.3.0が必要と出ています。そのため、php7.3をインストールしてやります。
brew install php@7.3
これでlaravel newできると思いきやリンクができていないので、このままではphp7.2が使われてしまいます。リンクするのには下記の呪文です。
brew link php@7.3
しかし、Warningが出てしまいました。
Warning: php@7.3 is keg-only and must be linked with --force
If you need to have this software first in your PATH instead consider running:
echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> /Users/user/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> /Users/user/.bash_profile
しかし、パスを通したいならこれを唱えろと書いてあるので下記の2つを唱えます。
export PATH="/usr/local/opt/php@7.3/bin:$PATH"
export PATH="/usr/local/opt/php@7.3/sbin:$PATH"
これで php -v で確認してやると下記のようなメッセージがでてうまくいったことが分かります。
PHP 7.3.19 (cli) (built: Jun 12 2020 00:08:40) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.19, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.19, Copyright (c) 1999-2018, by Zend Technologies
インストールしたものにはパスを通す、というのがこの教訓ですね。
Laravel 8 Error: Target class [HomeController] does not exist
2021年にもう一度環境を構築しようと思ったときに今まで出なかったLaravel 8 Error: Target class [HomeController] does not existというエラーがでました。
HomeControllerがない、というエラーなのですがファイルを確認してもHomeControllerはあって何が原因か1時間ぐらい悩みました。こちらのページを参考にすると解決できました。
下記のようにRouteServiceProvider.phpのbootを編集してやると上手く動くようになりました。
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::middleware('web')
->namespace($this->namespace) // this line
->group(base_path('routes/web.php'));
Route::prefix('api')
->middleware('api')
->namespace($this->namespace) // this line
->group(base_path('routes/api.php'));
});
なぜこんなエラーが出るようになっているのかは不明でした。同じエラーで困っている人の助けになればと思っています。
Valetを使う
毎回、プロジェクトから php artisan serve を唱えるのが面倒だ、という人もいると思います。そんな時にValetが役立ちます。
laravel new で作ったプロジェクトから下記の呪文を唱えます。
composer global require laravel/valet
次に親プロジェクトに移動して下記の呪文を唱えます。
valet install
valetの使い方は下記の呪文で見ることができます。
valet help park
パスワードはログイン時のパスワードです。
うまくいけば下記のようなメッセージが出ます。
Description:
Register the current working (or specified) directory with Valet
Usage:
park [<path>]
Arguments:
path
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
ディレクトリのPATHをValetに登録しなさい、とメッセージが出てるので下記の呪文を唱えます。
valet park
これで親ディレクトリに含まれているディレクトリがValetで使えるようになりました。’子ディレクトリ名.test ’ をブラウザに入力してさっきと同じ画面がでれば完了です。
まとめ
今回はlaravelを始め方を紹介しました。
エラーが出ることがあるかも知れませんが、エラーメッセージで検索すると大抵の答えは分かります。
長くなりましたが経験上この方法が一番簡単なやり方だと思います。laravelを始めたい方の参考になればと思います。