0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel 「Permission denied」のエラーでブラウザ表示ができない時の解決法

Last updated at Posted at 2025-02-16

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を使ってブラウザ表示するだけで丸一日かかった。

 
弱弱エンジニアのくせに挫折しなかった私を褒めたい。チョコ食べたい。

 
この記事が誰かの役に立つことを心から願っている。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?