忙しい人向けの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 Interpreters | Path Mapping は Project root → /var/www/html で正しく見える |
Test Frameworks | autoload / 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
原因
- 最初期のコンテナ設定が
/opt/project
- そのとき生成した PhpStorm 設定ファイルに絶対パスが埋め込まれる
- Dockerfile / docker‑compose を
/var/www/html
に直しても、.idea/php.xml
と.idea/php-docker-settings.xml
が/opt/project
を保持 → IDE はここを最優先で参照
解決までのステップ
- .idea 内の化石を検索
grep -r "/opt/project" .idea --include="*.xml"
別に検索機能でも良い - 対象箇所を確認してEditorで書き換え
- テスト再実行
自分の場合これで動作した。
まとめ & 教訓
- 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更新する時間がありませぬ。
今日はしょうもない不具合でクソハマってムカついたので更新しにきました。
コメントを残す