XAMPPでLaravelのWebアプリを開発しようかなーと思った矢先にエラーで挫折しそうになったので、ここにメモしておく。
まず初めにXAMPPへデプロイした際に出てきたエラーの内容はこんな感じ。
file_put_contents(/Applications/XAMPP/xamppfiles/htdocs/プロジェクト名/storage/framework/views/95f7127b54544d8bcf9a632a1de54c4e.php): Failed to open stream: Permission denied
とりあえずPermission deniedって書いてあったら、編集権限がないよーというエラーである。
パーミッションをコマンドラインから変更する時どーするんだっけなーと毎回調べる下記のコードでパーミッションを変更する。
sudo chmod 777 ファイル名orディレクトリ名
上のエラーの場合
sudo chmod 777 /Applications/XAMPP/xamppfiles/htdocs/プロジェクト名/storage/framework/views/
これで解決した。
次に出てきたエラーはこんな感じ。
The stream or file "/Applications/XAMPP/xamppfiles/htdocs/プロジェクト名/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied The exception occurred while attempting to log:〜あーだこーだ
これもさっきと同じ要領で下記のように書いて解決。
sudo chmod 777 /Applications/XAMPP/xamppfiles/htdocs/プロジェクト名/storage/logs/
警告
XAMPPを使ったローカル環境での開発だから777で設定しちゃってます。
本番公開する際は、安易に777を設定しちゃだめ。
これでやっと正常に表示されるかと思ったらさ、
Illuminate\Database\QueryException
SQLSTATE[HY000]: General error: 8 attempt to write a readonly database (Connection: sqlite, SQL: update "sessions" set "payload" = 〜あーだこーだ
ちょっとググったら、どうやらmysqlが接続されていないというエラーらしい。
.envファイルを見てみると
DB_CONNECTION=sqlite
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=laravel
# DB_USERNAME=root
# DB_PASSWORD=
こんな記述を発見したので、
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
上記のように、”sqlite”を”mysql”に変更し、コメントアウトされている部分を解除。
すると、また次のエラー。
SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select * from sessions
where id
= 92uOlagoTUifczmprxySArf5EZfPp3wJQSPQxwI6 limit 1)
はーん。
ここは勘が鋭くて、ポートが違うのかもなぁと思ったらその通り。
XAMPPのMySQLのConfigureを確認したところ、ポート番号が3307でした。
.envファイルの該当箇所を
DB_PORT=3307
に修正して
php artisan config:clear
でキャッシュクリア。
しかし、まだ映らない。
.envファイルでSESSION_DRIVER=databaseと指定しているので、DBにsession用のテーブルがないのかも思い、色々ググってみたところ、マイグレーションってのをしないといけないらしい。
たしかに、DBの接続だけしてDBの設定は何もしないんだなーと思っていた。
マイグレーションのコマンドはこちら。
php artisan migrate
これを打つとテーブルないけど作っちゃってOK?みたいなメッセージがでるので、そのままエンターを押す。
そうすると、色々テーブルが作られたので、再度ブラウザをリロード。
やっと映った。
こんなの青本に書いてなかったよ。
この記事を書くのに、1時間半くらいかかってるし、laravelをインストールしてXAMPPを使ってブラウザ表示するだけで丸一日かかった。
弱弱エンジニアのくせに挫折しなかった私を褒めたい。チョコ食べたい。
この記事が誰かの役に立つことを心から願っている。