1
0

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 で @yield, @section が正しく動作しない場合の解決策

Last updated at Posted at 2025-05-22

確認環境

Mac OS Ventura 13.7.4 → 追記 13.7.6 UPDATEしました
Vscode

laravel 12
Docker 4.22.0 → 追記 4.41.2 UPDATEしました

yield, section が正しく動作しない

Laravel12 の学習中 @yield, @section が動きませんでした。
学習していたサイトはこちら。

ブラウザの画面に次のような表示が出ています。

image.png

("author": "Felix Geisendörfer (http://debuggable.com/)", "name": "combined-stream", "description": "A stream that emits multiple other streams one

ChatGPTの回答で、node_modules を削除して、npm i を実行してみて言われたので、実行してみたものの、次のパターンに変わっただけ。

a:3:{s:6:"_token";s:40:"BAIALXd3B6U1zHWnYYCAFYKR1hd3Bi9NrEQC0s8v";s:9:"_previous";a:1:{s:3:"url";s:21:"http://localhost:8080";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}

明らかに何かがおかしい。

原因

ChatGPT のすすめで、次のコマンドでログをログを確認した所、

docker compose logs db

compose.yaml
db の volume 設定先(今回は ./docker/mysql/data, ./docker/mysql/initdb.d)で、
Mac の隠しファイル(._ファイル名)が生成されているのが原因らしい...

db-container  | chown: changing ownership of '/var/lib/mysql/performance_schema/._memory_summary_b_154.sdi': Operation not permitted
db-container  | chown: changing ownership of '/var/lib/mysql/performance_schema/._memory_summary_b_155.sdi': Operation not permitted
...以降多数

解決策

1, docker-compose.yaml や compose.yaml で named volume (名前付きボリューム)を設定する

services:
  db:
    build: ./docker/mysql
    container_name: db-container
    volumes:
-     - ./docker/mysql/data:/var/lib/mysql
-     - ./docker/mysql/initdb.d:/docker-entrypoint-initdb.d
+      - mysql-data:/var/lib/mysql
+      - mysql-initdb:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_ROOT_PASSWORD=mysql
      - MYSQL_DATABASE=database
      - MYSQL_USER=user
      - MYSQL_PASSWORD=password
      - TZ=Asia/Tokyo
    ports:
      - '3306:3306'
  app:
    build: ./docker/php
    container_name: app-container
    volumes:
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
      - ./app/laravel:/var/www
    ports:
      - '8080:80'
    depends_on:
      - db
  phpmyadmin:
    build: ./docker/phpmyadmin
    container_name: phpmyadmin-container
    volumes:
      - phpmyadmin-sessions:/sessions
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=db
      - PMA_USER=root
      - PMA_PASSWORD=mysql
    ports:
      - '4040:80'
    depends_on:
      - db
#以降を追加
+volumes:
+  mysql-data:
+    driver: local
+  mysql-initdb:
+    driver: local


2, 実行中のコンテナに入り、キャッシュをクリアする

docker compose exec app bash

php artisan view:clear
php artisan cache:clear

3, docker を再起動する

docker compose stop
docker compose up -d

これで直りました。

image.png

古いボリュームは削除しておきます。

rm -r ./docker/mysql/data

追記

その後、複数のページ遷移時に、〇〇.blade.php の内容がうまく更新されなかったので、
Mac と Docker をアップデートして、キャッシュクリア、ブラウザもハード再読み込みで更新されるようになりました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?