【Macユーザー向け 】Laravelをインストールする方法

【Macユーザー向け 】Laravelの始め方
この記事はこんな悩みを解決します
  • laravelを勉強したい
  • laravelを簡単にインストールする方法が知りたい
  • Homesteadがうまく動かずイライラする

PHPを勉強してきてLaravelを使ってみたい、という人も多いと思います。フレームワークを使うことで効率的にプログラミングが行えます。
Laravelは難しいんじゃないの?と思うかもしれませんが、私自身完全に初心者から始めて扱えるようになっています。

この記事を読むことで一からLaravelを始める方法が分かります。(ちなみに、Macユーザー向けですのでご注意ください。)

【Macユーザー向け 】Laravelのインストールの方法

Laravelを動かす環境としてHomesteadとValetがあります。HomesteadはVagrantやVirtual Boxなどが必要で少しややこしくなるので今回はValetを使っていきます。(Homesteadは過去に私が行った時にはなぜかJavascriptが機能しませんできした。)

では、まずはLaravelをインストールするために必要なものをインストールしていきます。

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を始めたい方の参考になればと思います。

関連記事