【環境構築のファイナルアンサー】PhpStorm SSHリモート開発で、ローカルPCを完全クリーンに保つ極上のプロフェッショナル環境を築こう!
こんにちは!開発環境の設計やDevOpsを推進している先輩エンジニアです。
PHP開発を始めるとき、こんな悩みに直面したことはありませんか?
「MacにHomebrewでPHPやXdebugを入れようとしたら、依存関係が崩れて動かなくなった…」
「Docker Desktopを起動するだけで、MacBookのファンが爆音で回り、バッテリーがゴリゴリ削れる…」
「ローカル(macOS/Windows)では動いていたのに、Linuxの本番サーバーにデプロイしたらパスの区切り文字や拡張子の違いで落ちた…」
これらの悩み、すべて今日で終わりにしましょう。
今回解説するのは、JetBrainsが提供する新世代の「PhpStorm Remote Development(SSHリモート開発)」です。
従来の単なる「ファイルをSFTPで自動転送する(Deployment)」機能ではありません。サーバー側でPhpStormのバックエンド処理を動かし、ローカルPCは単なる『UI(表示画面)』として機能させるアーキテクチャです。
これを導入すれば、あなたのローカルPCにはPHPも、Composerも、Xdebugも、Dockerすら入れる必要はありません。ローカル環境は一切汚れず、どんなに重い静的解析も開発サーバーのパワフルなCPUが処理してくれます。
「難しそう…」と思うかもしれませんが、大丈夫です。順を追って優しく丁寧に解説します。これをマスターすれば、毎日のコーディングが驚くほど快適になり、開発効率が劇的に上がりますよ!
—
1. 従来の手法と何が違う? Remote Developmentの内部アーキテクチャ
まずは「なぜこの設定が必要なのか」という全体像(仕組み)を頭に入れておきましょう。
これまでの一般的な開発手法(SFTP同期)と、新世代の「SSH Remote Development」の違いは以下の図の通りです。
【従来のSFTP同期(Deployment)】
+————————+ SFTP転送 +————————+
| ローカルPC (Mac/Win) | ===============> | 開発用Linuxサーバー |
| – PhpStorm (全処理) | | – Webサーバー (Nginx) |
| – ローカルPHP/Composer| | – PHP / Database |
+————————+ +————————+
※ ローカルPC側にもPHPや拡張モジュールが必要になり、環境が汚れる
【新世代 SSH Remote Development】
+————————+ SSH (TCP 22) +————————+
| ローカルPC (Mac/Win) | ===============> | 開発用Linuxサーバー |
| – JetBrains Client | UIイベント/描画 | – PhpStorm Backend |
| (超軽量UIのみ) | | (コード解析/インデックス)|
| ※ PHP等一切不要! | | – PHP / Composer / DB |
+————————+ +————————+
※ すべての重い処理はサーバー側で完結!
従来の「SFTP同期」は、ローカルでファイルを編集し、それをサーバーへ送信していました。そのため、補完や静的解析(PHPStanなど)を動かすには、ローカル側にもPHP環境を用意する必要がありました。
しかし、SSH Remote Developmentでは、リモートサーバー上にHeadless(画面のない)PhpStormバックエンドが常駐します。
コードのシンタックスハイライト、インデックス作成、リファクタリング、静的解析の実行はすべてサーバー側のリソースで行われ、ローカル側は画面描画だけを担当します。
この仕組みにより、以下の絶大なメリットが手に入ります。
- ローカルPCが一切汚れない: PHPバイナリも拡張モジュールも不要。
- 開発速度の爆破的向上: 大規模なプロジェクトのインデックス作成も、高性能な開発サーバーのCPU/RAMで爆速完了。
- 「ローカルでは動いたのに」の撲滅: 最初からOSもPHPバージョンも本番と同じ環境でコードを書ける。
—
2. 準備編:SSH接続のスムーズな設定
まずは、ローカルPCからリモートサーバーへパスワードなしで安全にSSH接続できるように準備します。
ローカルPCの設定(`~/.ssh/config`)
ターミナルを開き、ローカルPCの `~/.ssh/config` ファイルにサーバーへの接続情報を定義します。こうしておくと、PhpStormからの接続が非常にシンプルになります。
~/.ssh/config の編集
nano ~/.ssh/config
ファイル内に以下の設定を記述してください。
————————————————–
開発用リモートLinuxサーバーの接続定義
————————————————–
Host dev-server
# サーバーのIPアドレスまたはホスト名を入力
HostName 192.168.11.50
# ログインするユーザー名(例: ubuntu, ec2-user, deployなど)
User ubuntu
# SSH秘密鍵のパスを指定(絶対パスで記述)
IdentityFile ~/.ssh/id_ed25519
# ポート番号(デフォルトは22)
Port 22
# キープアライブの設定(接続切れを防止)
ServerAliveInterval 60
ServerAliveCountMax 3
設定したら、ターミナルで接続確認をしてみましょう。
ターミナルから1発でログインできるかテスト
ssh dev-server
パスワードを聞かれずにリモートサーバーのシェルに入れれば準備完了です!
—
3. 実践編:PhpStormからリモートサーバーへ接続する
いよいよ、PhpStormを使ってリモート開発環境を構築します。
Step 1: ウェルカム画面からRemote Developmentを起動
1. PhpStormを起動します(既存プロジェクトが開いた場合は `File` -> `Close Project` でウェルカム画面に戻ります)。
2. 左側メニューの [Remote Development] をクリックし、[SSH] を選択します。

Step 2: SSH接続情報の選択
1. [New Connection] をクリックします。
2. 「SSH configuration」のドロップダウンで、先ほど `~/.ssh/config` に設定した `dev-server` を選択します。(表示されない場合は「…」ボタンから追加します)。
3. [Check Connection and Continue] をクリック。
Step 3: リモート側のPhpStormバージョンとプロジェクトパスを指定
接続が成功すると、サーバー側の設定画面が表示されます。
- IDE version: 最新のPhpStormを選択(自動的にサーバー側に必要なバックエンドがダウンロード・インストールされます)。
- Project directory: 開発したいリモートサーバー上のプロジェクトディレクトリを指定します。(例: `/var/www/my-php-app`)
最後にある [Start IDE and Connect] ボタンを押します!
すると、自動的にサーバー側でIDEバックエンドが起動し、ローカル側には軽量クライアント(JetBrains Client)が立ち上がります。
—
4. サーバー側環境の設定(PHP, Composer, Xdebug)
画面が開いたら、すでにサーバー上のファイルを直接編集できる状態になっています。
しかし、これだけでは終わらせません。プロフェッショナルとして、サーバー上のPHPバイナリ、Composer、Xdebugを完全連携させましょう。
サーバー側の初期状態(リモートサーバー上で実行)
リモートサーバーにインストールされているPHPとComposerのバージョンを確認しておきます。
リモートサーバーのターミナル(PhpStorm内のTerminalタブでOK)で確認
ubuntu@dev-server:~$ php -v
PHP 8.3.6 (cli) (built: Apr 15 2024 15:30:00) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
with Zend OPcache v8.3.6, Copyright (c me), by Zend Technologies
with Xdebug v3.3.1, Copyright (c) 2002-2024, by Derick Rethans
ubuntu@dev-server:~$ composer –version
Composer version 2.7.2 2024-03-11 12:44:28
ローカルPCにはPHPを一切入れていませんが、PhpStormはサーバー側のPHPを直接参照してコード分析を行います。
—
5. 精度抜群の「Hello World」& リモートデバッグ動作確認
環境が正しくセットアップできたか確認するために、単純なCLI実行と、Xdebugを使ったリモートデバッグの「Hello World」を行ってみましょう!
1. リモートデバッグ用の `php.ini` 設定(サーバー側)
サーバー側の `php.ini`(または `/etc/php/8.3/cli/conf.d/20-xdebug.ini` など)に以下の設定が記述されているか確認します。
; ==================================================
; リモートデバッグ用 Xdebug 3.x 設定
; ==================================================
[xdebug]
; デバッグモードを有効化
xdebug.mode = debug,develop
; リクエスト開始時に自動的にデバッガを起動
xdebug.start_with_request = yes
; IDEが待機しているホスト(SSHトンネル経由の場合は localhost)
xdebug.client_host = 127.0.0.1
; Xdebug3のデフォルトポート
xdebug.client_port = 9003
; ログ出力先(デバッグが上手くいかない時の解析用)
xdebug.log = /tmp/xdebug.log
2. テスト用PHPスクリプトの作成
プロジェクト直下に `hello.php` を作成します。ファイル作成も、もちろんローカルのPhpStorm上で直接行えます(ファイルは即座にサーバー側に保存されます)。
/
declare(strict_types=1);
class Greeting
{
private string $target;
public function __construct(string $target)
{
$this->target = $target;
}
public function sayHello(): string
{
// ★ ここにブレークポイント(赤丸)を設定します!
$message = sprintf(“Hello, %s! Executed on Remote Server [%s]”, $this->target, php_uname(‘n’));
return $message;
}
}
// 実行処理
$greeting = new Greeting(“Engineers”);
echo $greeting->sayHello() . PHP_EOL;
3. PhpStormでのデバッグ実行
1. コード内の `$message = …` の行(18行目付近)の行番号の横をクリックして、赤丸(ブレークポイント) をつけます。
2. PhpStormの右上にある「電話の受話器アイコン(Start Listening for PHP Debug Connections)」をクリックして、緑色の電波が出ている状態(待機状態)にします。

3. PhpStormの下部にある [Terminal] タブを開きます。このターミナルはサーバー側のSSHシェルです。
4. ターミナルから以下のコマンドを実行します。
サーバー上で直接PHPスクリプトを実行
php hello.php
4. 運命の瞬間!
コマンドを打ち込んだ瞬間…… PhpStormの画面がバッと切り替わり、ブレークポイントを設定した行で処理が一時停止します!
[Debugger タブの変数表示]
$this = {Greeting}
target = “Engineers”
$message = uninitialized
サーバー上で動いているPHPのメモリ内部(変数の中身)が、手元のローカルPCの画面上にリアルタイムで可視化されました!
そのまま `F9`(Resume Program)を押すと、ターミナルに以下のような実行結果が出力されます。
実行ログの出力例
Hello, Engineers! Executed on Remote Server [dev-server-hostname]
サーバーのホスト名が出力されていることから、コードの実行もデバッグも100%リモートサーバー上で行われたことが証明されました。ローカルPCのリソースは一切使われておらず、CPUファンも静かなままです!
—
6. 先輩からのアドバイス:開発をさらに快適にする設定
最後に、このリモート開発環境をさらに洗練させるためのプロのコツを伝授します。
Composerの自動補完を活かす
リモートのターミナルで `composer require monolog/monolog` などを実行すると、サーバー側の `vendor/` ディレクトリにライブラリがインストールされます。
PhpStormバックエンドはこれを自動的に検知し、外部ライブラリのクラス補完(`use Monolog\Logger;` など)も爆速で有効化してくれます。あなたがローカルで何かを同期操作する必要は一切ありません。
ネットワークが不安定な場合
JetBrains Gatewayは、一時的なネットワーク切断に対しても強い耐性を持っています。電車での移動中などにWi-Fiが切れても、再接続すれば作業状態(開いていたファイルやカーソル位置)がそのまま復元されます。
—
まとめ:ローカルを汚さない「究極の環境」で爆速開発を楽しもう!
今回構築した環境の凄さを、もう一度振り返ってみましょう。
1. ローカルPCは完全クリーン: PHP、Composer、Dockerすら不要。
2. 本番と100%同じ環境: Linuxサーバー上のバイナリで直接実行・静的解析・デバッグ。
3. PCのスペックに依存しない: 重い処理はすべてサーバー側。MacBook Airでも超大規模プロジェクトがスラスラ動く。
一度この快適さを体験してしまうと、ローカルPCにいくつものPHPバージョンを切り替えて入れていた昔環境にはもう戻れなくなります。
環境構築に無駄な時間を奪われるのは今日で終わりです。洗練されたプロフェッショナルな環境で、最高のコーディング体験を味わってくださいね!
応援しています!