朝飯前にMacのローカルにLaravel環境を構築する

# Mac ローカルにPHPをインストールする

サクッとLaravel環境を作りたい時ってありますよね？
カップ麺を作る時間すらも惜しい...そんな時...

MacのローカルにLaravel環境を構築する手順をご紹介します。

## Mac標準のPHP

```shell-session
$ which php
/usr/bin/php

$ php -v
PHP 7.3.11 (cli) (built: Feb 29 2020 02:50:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies
```

これでもいいんですけど、バージョンが古かったりzip拡張機能がデフォルトで入ってなかったりするので少し面倒なので、HomebrewでPHPをインストールします。

複数のPHPバージョンを使い分けたい訳ではなく最新版のPHPが使えればいいので、今回はanyenvやphpenvは使いません。

## Homebrew からPHPをインストールする

- https://brew.sh/index_ja

```shell-session
$ brew install php
```

`~/.zshrc` に環境変数のPATHにPHPのパスを追加します。

```shell-session
$ echo export PATH='/usr/local/opt/php/bin/php:$PATH' >> ~/.zshrc
```

シェルを再起動して設定ファイルを読み直します。

```shell-session
$ exec $SHELL -l
```

PHPのバージョンが更新されたらokです。

```shell-session
$ php -v
PHP 7.4.6 (cli) (built: May 29 2020 01:44:57) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.6, Copyright (c), by Zend Technologies
```

HomebrewからインストールしたPHPに入っているPHP拡張機能です。

```shell-session
$ php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
intl
json
ldap
libxml
mbstring
mysqli
mysqlnd
odbc
openssl
pcntl
pcre
PDO
pdo_dblib
pdo_mysql
PDO_ODBC
pdo_pgsql
pdo_sqlite
pgsql
Phar
phpdbg_webhelper
posix
pspell
readline
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tidy
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache
```

これだけ入っていれば十分でしょう。

## Homebrew からComposerをインストールする

```shell-session
$ brew install composer
```

```shell-session
$ composer -V
Composer version 1.10.6 2020-05-06 10:28:10
```

## SQLite

データベースは何でもいいですが、今回は導入が手軽なSQLiteにします。

- ローカルでMySQL使いたい人用に参考記事
  - [Mac MySQL 8.0 再インストールする](https://qiita.com/ucan-lab/items/d02ec1de31613b2add0e)

```shell-session
$ brew install sqlite
```

```shell-session
$ sqlite3 --version
3.28.0 2019-04-15 14:49:49 378230ae7f4b721c8b8d83c8ceb891449685cd23b1702a57841f1be40b5daapl
```

## Laravelインストーラ

Laravelのバージョンの指定は必要なく最新版をインストールして使いたいのでLaravelインストーラを入れておくと便利でしょう。

```shell-session
$ composer global require laravel/installer
```

グローバルに`laravel/installer` が追加されていたらokです。

```shell-session
$ composer global show | grep laravel
Changed current directory to /Users/ucan/.composer
laravel/installer         v3.1.0  Laravel application installer.
```

`~/.zshrc` に環境変数のPATHにPHPのパスを追加します。

```shell-session
$ echo export PATH='$HOME/.composer/vendor/bin:$PATH' >> ~/.zshrc
```

シェルを再起動して設定ファイルを読み直します。

```shell-session
$ exec $SHELL -l
```

## Laravelのインスール

上記の作業は寝る前に事前に済ませておきましょう。
Laravelのインストールはもはや朝飯前です。

```shell-session
$ laravel new blog
```

```shell-session
$ cd blog
$ php artisan --version
Laravel Framework 7.13.0
```

## Laravelビルトインサーバを起動する

```shell-session
$ php artisan serve
```

http://127.0.0.1:8000

`control` + `c` でサーバーを停止できます。

## LaravelとSQLiteを接続する

`.env` を修正する

```
DB_CONNECTION=sqlite
#DB_CONNECTION=mysql
#DB_HOST=127.0.0.1
#DB_PORT=3306
#DB_DATABASE=laravel
#DB_USERNAME=root
#DB_PASSWORD=
```

データベースファイルを作成する

```shell-session
$ touch database/database.sqlite
```

```shell-session
$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (0 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (0 seconds)
```

## 最後に

Laravelの環境構築の記事をいくつか書いているのでよかったら読んでもらえたら嬉しいです！
(情報が古くなってるものもありますが...)

- [最強のLaravel開発環境をDockerを使って構築する【新編集版】](https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4)
- [Docker x Laravel 脅威の1ファイル！最小構成でローカル開発環境を構築する](https://qiita.com/ucan-lab/items/11ab92b672e3fa2d9bdb)
- [【忙しい人向け】カップ麺より早く作るDockerでLaravel開発環境構築](https://qiita.com/ucan-lab/items/d7752b43a9e89cc16b22)
- [【初心者向け】20分でLaravel開発環境を爆速構築するDockerハンズオン](https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4)
- [Laravelの開発環境をDockerを使って構築する](https://qiita.com/ucan-lab/items/17c806973e69792ada99)
- [Laravelの開発環境をHomesteadを使って構築する](https://qiita.com/ucan-lab/items/9b97fbf0b43c0849fd51)
- [Laravelの開発環境をLaradockを使って構築する](https://qiita.com/ucan-lab/items/90f74ce801618830e4fc)
- [Laravelの開発環境をVagrantを使って構築する](https://qiita.com/ucan-lab/items/e4a268e9f227ed6294b4)