メシのタネ

メシのタネになる、Laravelや設計思想の技術配信サイト


PhpStorm × Docker × PHPUnit環境で /opt/project が出てテストが見つからない人が安心できる記事


  1. 制作環境
  2. PhpStorm × Docker × PHPUnit環境で /opt/project が出てテストが見つからない人が安心できる記事

忙しい人向けの1行説明: .idea/php.xml.idea/php-docker-settings.xml に埋め込まれた /opt/project/var/www/html に置換してテストすればOK。GUIで設定しても大丈夫じゃない時がある。

背景

Laravel プロジェクトを Docker Compose + PhpStorm で開発。ある日から GUI でユニットテストを走らせると、

Test file "/opt/project/tests/..." not found

のエラーで赤くなる。IDEの罠で1時間くらい対処に時間かかったので書き留めておく。

対処済みだったこと(想定読者)

  • DockerCompose、DockerFileの作業ディレクトリに設定されてる
  • DockerComposeでインタープリタ設定
  • テストフレームワークをリモートインタープリタで設定

PhpStormの仕様的には、これで大団円になるはずなのだが治らない。この記事の読者はここを想定。

症状メモ

どこで何が起きたか
PhpStorm Run/Debugコマンド末尾が必ず /opt/project/tests/... になる
Settings › PHP › CLI InterpretersPath Mapping は Project root → /var/www/html で正しく見える
Test Frameworksautoload / phpunit.xml ともに /var/www/html
CLI 直接実行テストは緑

環境

  • macOS 14 (Apple Silicon)
  • PhpStorm 2025.1 EAP
  • Docker Desktop 4.32
  • PHP 8.4.10 (official fpm‑alpine)
  • PHPUnit 11.5.15

原因

  1. 最初期のコンテナ設定が /opt/project
  2. そのとき生成した PhpStorm 設定ファイルに絶対パスが埋め込まれる
  3. Dockerfile / docker‑compose を /var/www/html に直しても、
    .idea/php.xml.idea/php-docker-settings.xml
    /opt/project を保持 → IDE はここを最優先で参照

解決までのステップ

  1. .idea 内の化石を検索 grep -r "/opt/project" .idea --include="*.xml" 別に検索機能でも良い
  2. 対象箇所を確認してEditorで書き換え
  3. テスト再実行

自分の場合これで動作した。

まとめ & 教訓

  • DockerComposeのwork_dirはDockerファイルに揃えておく
    • ここをミスると、./idea/php-docker-settings,xml , php.xml に意図しないパスが設定される
    • これがGUIで治らないからテスト実行時、対象ファイルを見つけられなかった
# .idea/php.xml
DOCKER_REMOTE_PROJECT_PATH="/opt/project"

# .idea/php-docker-settings.xml
<mapping local-root="$PROJECT_DIR$" remote-root="/opt/project" />

これをWorkDirに合わせて変更。

最近自分の中のLaravel+inertia.js+クリーンアーキテクチャ+DDDの理解の集大成を認証基盤に込める取り組みをしてるので更新遅いです。

できたらGithubにでもPushします。進捗60%くらい。こっちに全精力注いでるのでBlog更新する時間がありませぬ。

今日はしょうもない不具合でクソハマってムカついたので更新しにきました。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください