いつもブログをご覧くださり、ありがとうございます。
これまで、UbuntuにDockerを導入し、PHP 8.4とMySQL 8.4を使った開発環境を構築しました。
さらに前回は、MacのVisual Studio Code(VS Code)からRemote SSHを利用してUbuntuへ接続し、Ubuntu上のPHPファイルを直接編集できる環境を構築しました。今回は同じUbuntuの開発環境へ、MacのPhpStormからSSH接続してリモート開発できる環境を構築してみます。
私は普段、PHPの開発ではPhpStormを利用することも多いため、VS CodeだけではなくPhpStormからも同じUbuntu上のプロジェクトを編集できるようにしてみました。
今回構築する環境は、次のようなイメージです。
Mac
│
└── PhpStorm
│
│ Remote Development
│ SSH公開鍵認証
▼
Ubuntu 24.04
│
└── /home/ubuntuuser/workspace/php-test
│
├── compose.yaml
├── Dockerfile
├── hello.php
├── db-test.php
└── users.php
│
▼
Docker Compose
├── PHP 8.4
└── MySQL 8.4
Mac側にプロジェクトファイルをコピーするのではなく、Ubuntu上にあるプロジェクトをPhpStormから直接開いて編集するのが今回のポイントです。
目次
今回の環境
今回使用した主な環境は次のとおりです。
クライアントPC:Mac
IDE:PhpStorm 2026.2.3
接続方法:JetBrains Remote Development / SSH
Ubuntu:Ubuntu 24.04 LTS
Docker:Docker Engine
PHP:PHP 8.4
MySQL:MySQL 8.4
なお、本記事に掲載しているIPアドレスやユーザー名などは、実際の環境とは異なる説明用の値に置き換えています。ご自身の環境に合わせて読み替えてください。
事前準備:MacからUbuntuへSSH接続できるようにする
PhpStormのRemote Developmentを利用する前に、MacからUbuntuへSSH接続できる必要があります。今回は、前回VS CodeのRemote SSH環境を構築した際に、SSH公開鍵認証を設定済みです。
Mac側にはUbuntu接続用として、
~/.ssh/ubuntu-dev
~/.ssh/ubuntu-dev.pub
というSSH鍵を作成しています。
それぞれ、
ubuntu-dev 秘密鍵
ubuntu-dev.pub 公開鍵
です。
公開鍵はUbuntu側の、
~/.ssh/authorized_keys
へ登録しています。
Mac側の ~/.ssh/config には、例えば次のような設定を行っています。
Host ubuntu-dev
HostName 192.168.1.100
User ubuntuuser
IdentityFile ~/.ssh/ubuntu-dev
Macのターミナルから、
ssh ubuntu-dev
を実行し、パスワードを入力せずUbuntuへログインできれば、SSH公開鍵認証は正常に設定されています。
今回は、このSSH鍵をPhpStormでも利用します。
PhpStormのRemote Developmentを開く
MacでPhpStormを起動します。
Welcome画面から、
Remote Development
を選択します。
Remote Developmentの画面には、
SSH Connection
Docker Dev Containers
などが表示されます。
今回はDockerコンテナそのものへIDEを接続するのではなく、UbuntuへSSH接続してUbuntu上のプロジェクトを開くため、「SSH Connection」を使用します。
「New Connection」をクリックします。
UbuntuへのSSH接続情報を設定する
「Connect to SSH」画面が表示されたら、Ubuntuへの接続情報を入力します。
例えば、
Username:ubuntuuser
Host:192.168.1.100
Port:22
と設定します。
今回はSSH公開鍵認証を使用するため、
Specify private key
にチェックを入れます。
秘密鍵にはMac側の、
/Users/ユーザー名/.ssh/ubuntu-dev
を指定します。
ここで指定するのは、
ubuntu-dev
という秘密鍵です。
ubuntu-dev.pub
ではありません。
.pub ファイルは公開鍵なので、接続元であるPhpStormに指定するのは秘密鍵の方になります。
設定できたら、
Check Connection and Continue
をクリックします。
SSH接続を確認する
SSH公開鍵認証が正常に行われると、
Successfully connected to:
ubuntuuser@192.168.1.100:22 key
のようなメッセージが表示されます。
今回はパスワードを入力することなく接続できました。
これで、
Mac
↓
PhpStorm
↓ SSH公開鍵認証
Ubuntu
までの接続が確認できました。
Ubuntu上のプロジェクトを指定する
SSH接続に成功すると、「Choose IDE and Project」という画面が表示されます。
今回はUbuntu上に、
/home/ubuntuuser/workspace/php-test
というプロジェクトを作成済みなので、「Project directory」にこのディレクトリを指定します。
今回のプロジェクトには、
php-test
├── compose.yaml
├── Dockerfile
├── hello.php
├── db-test.php
└── users.php
といったファイルがあります。
プロジェクトディレクトリを指定したら、
Start IDE and Connect
をクリックします。
PhpStormのバージョンに注意する
今回、Remote Developmentの設定中に一度、
PhpStorm 2026.3 EAP
が選択されました。
EAPは、
Early Access Program
の略で、正式リリース前の開発版です。
新機能を早く試せるメリットがありますが、今回は普段の開発環境として利用したいため、安定版のPhpStormを使用することにしました。
最終的には、
PhpStorm 2026.2.3
でRemote Development環境を構築しました。
使用中のバージョンは、PhpStormの「About PhpStorm」から確認できます。
今回の環境では、
PhpStorm 2026.2.3
Build #JBC-262.10968.76
となっており、EAPではない安定版で接続できていることを確認しました。
Remote Developmentで利用するIDEを選択する際には、EAP表記があるかどうかも確認しておくとよいでしょう。
Ubuntu上のプロジェクトがPhpStormで開いた
接続に成功すると、PhpStormのProject画面にUbuntu上のファイルが表示されました。
php-test
├── compose.yaml
├── compose.yaml.bak
├── db-test.php
├── Dockerfile
├── hello.php
└── users.php
ここで表示されているファイルは、Macへコピーされたファイルではありません。
Ubuntu上の、
/home/ubuntuuser/workspace/php-test
にあるファイルをRemote Development経由で開いています。
そのため、VS CodeのRemote SSHで開いていたものと同じプロジェクトをPhpStormからも編集できます。
PhpStormのターミナルもUbuntu上で動作する
Remote Developmentで接続したPhpStormからターミナルを開くと、
ubuntuuser@ubuntu-server:~/workspace/php-test$
のように表示されます。
つまり、このターミナルもMac上ではなくUbuntu側で実行されています。
例えば、
pwd
を実行すると、
/home/ubuntuuser/workspace/php-test
となります。
Docker Composeの状態を確認したい場合も、
sudo docker compose ps
と実行できます。
Macのターミナルを別途開いてSSH接続しなくても、PhpStorm内からUbuntuのコマンドを実行できるので便利です。
PhpStormからPHPファイルを編集する
実際にPhpStormからPHPファイルを変更してみます。
hello.php を開いて、
<?php
echo "Hello from PhpStorm!";
と変更して保存しました。
今回のDocker Compose環境では、Ubuntu上のプロジェクトディレクトリをPHPコンテナへマウントしています。
compose.yaml では、次のように設定しています。
volumes:
- .:/app
そのため、
MacのPhpStorm
↓
Ubuntu上のhello.php
↓
Dockerコンテナの/app/hello.php
という流れで変更内容が反映されます。
Macのブラウザから確認する
PHPコンテナではPHPの開発用Webサーバーを起動しており、
ports:
- "8001:8000"
としてUbuntuの8001番ポートからアクセスできるようにしています。
Macのブラウザから、
http://192.168.1.100:8001/hello.php
へアクセスします。すると、
Hello from PhpStorm!
と表示されました。
これで、
PhpStormで編集
↓
Ubuntu上へ保存
↓
Dockerコンテナへ反映
↓
PHPで実行
↓
Macのブラウザで確認
という一連の流れが正常に動作していることを確認できました。
VS CodeとPhpStormの両方から同じプロジェクトを編集できる
今回の環境では、前回設定したVS CodeのRemote SSHも利用できます。
そのため、
Mac
├── VS Code
│ └── Remote SSH
│
└── PhpStorm
└── Remote Development
│
│ SSH
▼
Ubuntu
│
└── workspace/php-test
│
▼
Docker Compose
├── PHP 8.4
└── MySQL 8.4
という構成になりました。
VS CodeとPhpStormのどちらを使っても、Ubuntu上の同じプロジェクトを編集できます。
PHPをしっかり開発するときはPhpStorm、ちょっとしたファイル編集ではVS Code、といった使い分けもできそうです。
ただし、同じファイルをVS CodeとPhpStormの両方で同時に編集する場合は、保存内容の競合には注意が必要です。
VS CodeのRemote SSHとの違い
今回、VS CodeとPhpStormの両方でUbuntuへのリモート開発環境を構築してみました。
どちらも、
Mac
↓ SSH
Ubuntu
↓
Ubuntu上のプロジェクト
という基本的な考え方は同じです。
一方で、仕組みには違いがあります。
VS Codeの場合は、Ubuntu側に、
~/.vscode-server
がインストールされ、Mac側のVS Codeと連携します。
PhpStormのRemote Developmentでは、Ubuntu側でJetBrainsのリモートIDE環境が動作し、Mac側がその環境へ接続する形になります。
そのため、見た目としてはどちらもMac上でIDEを操作していますが、通常の「Mac上のファイルを編集する」のとは異なる構成になっています。
SSH公開鍵認証にしておくと便利
今回、VS CodeのRemote SSHを構築した際に作成したSSH鍵を、そのままPhpStormでも使用できました。
Mac側には秘密鍵、
~/.ssh/ubuntu-dev
を保存し、Ubuntu側には対応する公開鍵を登録しています。
一度公開鍵認証を設定しておけば、
ssh ubuntu-dev
によるターミナルからのSSH接続だけでなく、
VS Code Remote SSH
PhpStorm Remote Development
の両方で利用できます。
開発用のUbuntuサーバーを用意する場合は、パスワード認証だけでなくSSH公開鍵認証も設定しておくと便利です。
まとめ
今回は、MacのPhpStormからRemote Developmentを利用してUbuntuへSSH接続し、Ubuntu上のPHPプロジェクトを直接編集できる環境を構築しました。
最終的な構成は次のようになりました。
Mac
│
└── PhpStorm 2026.2.3
│
│ Remote Development
│ SSH公開鍵認証
▼
Ubuntu 24.04
│
└── workspace/php-test
│
└── Docker Compose
├── PHP 8.4
└── MySQL 8.4
PhpStormで hello.php を編集して保存するとUbuntu上のファイルが更新され、その変更がDockerコンテナへ反映されました。
Macのブラウザからアクセスすると、
Hello from PhpStorm!
と表示され、正常に動作していることも確認できました。
これで、
MacのPhpStormでコードを書く → Ubuntu上のDockerで実行する → Macのブラウザで確認する
というPHPの開発環境が完成しました。
前回構築したVS CodeのRemote SSHもそのまま利用できるため、用途に応じてVS CodeとPhpStormを使い分けながら、Ubuntu上の同じDocker開発環境を利用できます。
今後は、この環境を使ってPHPとMySQLを利用したWebアプリケーションの開発も進めていきたいと思います。

