LoginSignup
19
12

More than 3 years have passed since last update.

LaravelからMAMPを使ってDBに接続するのに四苦八苦した話

Posted at

はじめに

私は初心者です。突っ込みどころありましたら、ご遠慮なくお願いします。

やりたいこと:
Laravelでのウェブアプリのチーム開発にあたって、デプロイする前にローカル開発環境(=各開発者のPC上の開発環境)を整えたい。ここでの開発環境とは、大きくサーバーとDBのこと。MAMPやLaradockが使えるようでしたが、馴染みのあるMAMPを選択しました。
本トピックに関する記事はググればいろいろ出てくるのですが、正直どれも情報が欠けている部分があって、その通りにやってもうまくいきませんでした。なのでここでまとめらることで、皆さんの作業がスムーズになればいいなと思いまとめてみます。

環境:
Laravel 7(バージョンの調べ方↓)、MAMP 5.7、

$ php artisan --version
Laravel Framework 7.26.1

1、LaravelをMAMPを通してサーバーに接続しブラウザで表示する

Laravel自体にはサーバーも内蔵されているので、ブラウザでlocalhost:8000のアドレスとphp aritisan serveコマンド
でブラウザでページを表示することができます。では、MAMPのApacheサーバーを利用する場合はどうするのでしょうか。
今回の解決策は、シンプルにhtdocs内(/Applications/MAMP/htdocs)にプロジェクト(laravel new プロジェクト名コマンドで作成するフォルダとファイル一式)を格納し、localhost:8888/のアドレスで表示することです。

ちなみに8888とは?
MAMPサーバーに割り当てられた登録済みポート番号です。(ポート番号とはコンピュータに割り当てられたIPアドレスが住所だとすると、その中の各ソフトウェアに割り当てられた部屋番号みたいなもの)ちなみに、8888-8889はMAMP、MySQLは3306。こちらのサイトで色々調べられておもしろいです→PORT INDEX

これでlocalhost:8888/あなたのプロジェクト名/publicでアクセスして下記ページ(welcome.blade.php)が表示されれば成功しています。
スクリーンショット 2020-09-02 16.27.33.png

私はここに来るまでにエラーに直面し四苦八苦しました。teratailで質問し解決したので、こちらからどうぞ。あらゆることを試したのでエラーと格闘している方のお役に立てると思います。
MAMPでlocalhost:8888に接続しようとするが404 Not Foundになってしまう

2、phpMyAdminでDBを作成し、Laravelから接続する

2-1 phpMyAdminで新規DBを作成しておく

ここで付けるデータベースの名前は後々Laravel側での設定で使うので、わかりやすい名前がいいと思います。現段階ではテーブルなど中身を作り込む必要はありません。

2-2 Laravel側の環境設定を変更する

(1) .envファイル(環境変数ファイル)を修正する

.envとはenvironmentの略で、Laravelの環境やら設定をいじるファイルみたいです。
ここが私のつまずきポイントの1つでした。「.envファイルってどこにあるの?」っていう...。答えは、意外とどの記事も触れてないのですが「Laravelのプロジェクトフォルダの直下にある。でも隠しファイルなのでFinderで見るときはまずCommand+Shift+.で隠しファイルを表示させよう。」でした。そうすると出てきますし、もしくはVS Codeの左のExplorer(フォルダやファイルを表示してくれるやつ)でも発見できます。

スクリーンショット 2020-09-05 11.46.46.png

.envファイルをVS Codeで開きます。
スクリーンショット 2020-09-02 15.43.39.png
ここがDBの設定なので、このように↓書き換えます。私は、mysqlをmyslqとスペルミスしてエラーが止まず時間を無駄にしました。。。
スクリーンショット 2020-09-05 11.52.35.png
どこかの記事で
DB_HOST=localhostと書き換えよ!と見ましたが、127.0.0.1はlocalhostと同義なので、、、
8889のポート番号はこれまたMAMPのポート番号です。
DB_DATABESE=には先ほど付けたデータベースの名前を。USERNAME, PASSWORD, SOCKETはMAMPのトップページに記載されています(下スクショご参照)。
スクリーンショット 2020-09-05 12.09.25.png

(2) database.phpの内容を変更する

/config/database.phpをVS Codeで開きます。18行目くらいが'default' => env('DB_CONNECTION', 'mysql'),とMySQLになっていることを確認し(MAMPの3つめのMはMySQLのM。MySQLとはDB管理システムの一つ。)、そのMySQLの設定を見ます↓

スクリーンショット 2020-09-02 16.36.02.png
このように書き換えます。.envファイルと似てます。

//中略
        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '8889'),
            'database' => env('DB_DATABASE', 'jazz_review'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', 'root'),
            'unix_socket' => env('DB_SOCKET', ''), 
//中略

unix_socketの第2パラメータに/Applications/MAMP/tmp/mysql/mysql.sockと入れる場合もあるのでしょうか。入れなくてもできてます。

(3)マイグレーション

正直このマイグレーションというのがまだ理解できていないのですが、これがDBと接続するのに必要みたいです。下記コマンドを実行します。

$ php artisan migrate

Migration table created successfully.と出るときちんとDBに接続できているみたいです。(僕の画面はその後にエラー出てますが...)
スクリーンショット 2020-09-02 21.32.02.png
また、phpMyAdminのDBを見ると、該当DBの中にfailed_jobs, users, password_resets, migrationsというテーブルができていて前者の3つは、/database/migrationsの中にあるファイルにあたります。

もしエラーが解決できなかったら...

私は当初php artisan migrateコマンドがうまくいかず泥沼にハマってました。この原因は先述のmyslqスペルミス問題でのエラーのはずなのですが、それに気づかず「うまくいかない!!」と気が動転しており、色々試していました。それらをまとめてQiitaで質問し解決しているので参考になるかもしれません→php artisan migrateを実行したいがエラーが解決できない

最後に

少しでもなにか皆さんのヒントになれば嬉しいです。ご指摘あればバシバシよろしくお願いします。

19
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
12