はじめに
この記事は、以下の記事の続きとして書いています。
今回はその環境構築中に実際に遭遇したエラーと、対処法をまとめています。
環境
- OS:Windows 10 または 11(64bit)
- 開発環境:WSL2 + Ubuntu + Docker Desktop + VSCode
- Laravel:Sail(公式Dockerベースの簡易開発ツール)を利用
エラー一覧と解決法
エラー①:Permission denied で Laravel が起動しない
【発生状況】
- localhost にアクセスしてもLaravelが表示されない
- Laravel Sail のコンテナは正常に起動している
- ログを確認すると「Permission denied」エラーが出ている
【エラー文(例)】
The stream or file “/var/www/html/storage/logs/laravel.log” could not be opened in append mode: Failed to open stream: Permission denied The exception occurred while attempting to log: The stream or file ...
【原因】
- storage/logs/laravel.log に書き込む権限がない
- Laravelプロジェクト内のファイルの所有者が root になっているため、Sailユーザーが書き込みできない
【解決法】
以下の手順で、ファイルの所有権を sail ユーザーに変更してください。
./vendor/bin/sail up -d # コンテナ起動(すでに起動していれば不要)
./vendor/bin/sail root-shell # コンテナに root ユーザーで入る
chown sail:sail . -R # ファイル所有者をsailに変更
exit # コンテナからログアウト
エラー②:./sail npm install
が固まって進まない/記号が出続けて止まらない
【発生状況】
-
./sail npm install
を実行したときに、「-」「/」「|」などの記号が画面に延々と出て止まらない - または途中で止まったように見える
【原因】
- WSL(Ubuntu)のネットワーク環境で SSL通信が正しく処理できない状態になっている
- プロキシ設定や会社ネットワーク環境が影響している
- npmの初期設定が厳しすぎて 自己署名証明書をはじいてしまう
【解決法】
SSLチェックを無効化して再試行してください。
※ディレクトリはプロジェクト直下(/home/ユーザー名/workspace/example-app)
npm config set strict-ssl false
実行後、再度vender/bin直下でインストールを行ってください。
cd /vendor/bin
./sail npm install
./sail npm run dev # 開発ビルドを実行
【補足1】
こちらの方法は、一時的な回避策としてSSLチェックをスキップしています。
設定を戻すには下記コマンドを入力してください。
npm config set strict-ssl true
【補足2】
初期状態では package-lock.json が .gitignore されていることがあります。
インストール後に新しくこのファイルが生成された場合は、Gitにコミットしておくと依存関係のバージョン違いによるトラブルを防げます。
git add package-lock.json
git commit -m "sail npm install"
【つまりどういうこと?】
.gitignore
とは、Gitで管理しないファイルを指定するための設定ファイルです。
ここに書かれたファイルやフォルダはGitで追跡・アップロードされません。
package-lock.json
とは、どのバージョンのパッケージを使っているか」を固定する重要なファイルです。
初期状態では.gitignore
にpackage-lock.json
が含まれていて、他の人の環境で動かないことがあるということです。
エラー③:PCを再起動したらページが開かなくなった
【発生状況】
- Laravel Sail で開発していたが、PCを再起動したあとにlocalhost にアクセスしてもLaravelが表示されない
- コンテナを立ち上げ直してもなぜか Laravel が表示されない
【エラー文(例)】
※ブラウザに表示される
Not Found
──────────────────────────────────────────────────────────────
The requested URL was not found on this server.
Apache/2.4.52 (Ubuntu) Server at localhost Port 80
【原因】
- PC再起動時に Apache が自動で起動してしまったため
【解決法】
プロジェクト直下(/home/ユーザー名/workspace/example-app)で下記コマンドを実行し、Apacheを停止してください。
sudo service apache2 stop
実行後、再度vender/bin直下でLaravel Sail のコンテナを再起動してください。
cd /vendor/bin
./sail up -d
エラー④:./sail up -d
で Laravel が起動しない
【発生状況】
-
./sail up -d
を実行したが、エラー文が出てしまう
【エラー文(例)】
Docker is not running.
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
【原因】
- Docker Desktop が起動していない
(docker コマンドがDockerデーモンと通信できていない)
【解決法】
最後に
初心者あるあるなのか、私が慎重すぎるのか
環境構築中のエラーについて検索して解決策がいっぱい出てくると「どれが正解かわからない、でも試した解決策が間違っていて、取り返しのつかないことになるのではないか(そしてその直し方も恐らくまたわからない)」という不安から、なかなか手が出せずに立ち止まってしまうことが何度もありました。
今回の記事については正直基本的な内容かもしれませんが、当時の自分にとっては手が止まる原因だったので、あえて書き残しておきたいと思いました。
今後も少しずつエラーや対処法を追加・更新していく予定です。
この記事が、かつての私のように不安を感じている方の安心材料になれば嬉しいです