phpstormを起動した時に
・npm run dev
・laravel起動をしたい
自動で npm run dev
run > editconfigurations
とりあえず、script text はダミーで。
before launchでサーバー側の設定をする
でbeforelaunchの + をクリック、
run rmote external tool を選択
こんな感じで設定。
スタートアップに設定
「プロジェクトを開いた瞬間に、さっき作ったコマンドが勝手に走る」ように設定しましょう。 これはPhpStormの 「Startup Tasks(スタートアップタスク)」 という機能を使います。
手順は以下の通りです。
手順
設定画面を開く
左上のメニューから File > Settings を開きます。
(ショートカットキー: Ctrl + Alt + S)
「Startup Tasks」を探す
設定画面の左メニューで Tools をクリックして展開し、その中にある Startup Tasks を選びます。
(見つからない場合は、左上の検索窓に Startup と入力すると早いです)
自動起動リストに追加する
画面左下にある + (プラスボタン)をクリックします。
Add New Configuration を選びます。
リストが出てくるので、先ほど作った設定の名前(例: Vue Dev や idol npm run dev など)を選んでください。
保存する
リストに追加されたことを確認して、右下の 「OK」 を押します。
続いて laravel を 8000で起動
run > editconfigurations
で、before launchは以下に設定
これでok
start up にも登録
プロジェクトを切り替えた時にも止まるようにする
プロジェクトを切り替えたときに自動で止まらない。
これでは困る。ポートのバッティング。
ということで、まずは、killをしてからportを開くようにする。
こんな感じで。
laravelも同じ用に一度8000番を止めてから起動するようにすると良い。
laravel
これで
・phpstorm 終了時
・phpstorm のプロジェクト変更時
の両方で止まる。
まとめAI
Qiita投稿用に、今回の設定ノウハウをまとめました。
ご要望通り、マウスを使わずキーボードだけで完結するよう、**「Altキーのアクセスキー(ニーモニック)」や「ショートカット」**の手順を添えています。
そのままコピペして使えるMarkdown形式です。
【PhpStorm】SSH開発で「Address already in use」とサヨナラ!プロジェクト切替時にLaravel & Viteを完全自動で再起動する最強設定
PhpStormでSSH(Remote Host)上のLaravelやViteを開発しているとき、プロジェクトを切り替えるとこんな悩みはありませんか?
- 「前のプロジェクトの
php artisan serve(ポート8000) がゾンビ化して残っている」 - 「新しいプロジェクトで起動しようとすると
Address already in useで落ちる」 - 「いちいちターミナルで
killしたりfuserするのが面倒」
これを解決するために、「起動する瞬間に、邪魔なポートを掃除(Kill)してから立ち上げる」 という設定を組み込み、さらに 「プロジェクトを開いた瞬間に自動実行」 させる最強のワークフローを作りました。
今回は、マウスを使わずにキーボードだけで爆速設定するためのショートカット手順も併記します。
実現すること
- プロジェクトを開くと、自動で
npm run devとphp artisan serveが走る。 - 起動直前に、前回の残留プロセス(ポート8000や5173)を自動で強制終了する。
- 設定にはマクロ(変数)を使い、他のプロジェクトへコピペするだけで即動作するようにする。
手順1:ポート掃除屋(Killコマンド)を作る
「終了時」に綺麗にすることを諦め、「開始時」に掃除する逆転の発想です。
操作手順(キーボードのみ)
- **
Shift+Alt+F10**を押し、リストが出たら0を押す。
- これで「Run/Debug Configurations(構成の編集)」が開きます。
- **
Alt+Insert**(または左上の+)を押し、矢印キーで Shell Script を選択してEnter。 -
Tabキーで項目を移動しながら以下を入力:
-
Name:
Kill Port 8000 -
Execute:
Script textを選択。 -
Script text:
echo cleaning(ダミーです) - Execute on: 接続先のSSHサーバーを選択。
- ここが重要です。
Alt+B**(または画面下の Before launch)へ移動し、Alt+Insert**(+) → Run Remote External Tool を選択。 - さらに **
Alt+Insert**(+) で新規ツール作成:
-
Name:
Kill 8000 -
Program:
/bin/sh -
Arguments:
-c "fuser -k 8000/tcp; exit 0" -
※
fuser -kで殺します。 -
※
; exit 0が重要です。プロセスがいなくてもエラーで止めないための呪文です。 -
Working directory:
/var/www/html(どこでもOK)
-
Enterで保存して閉じる。
同様に、Vite用(ポート5173)の掃除ツール Kill Port 5173 も作っておきます。
(Arguments: -c "fuser -k 5173/tcp; exit 0")
手順2:メインの起動設定を作る(マクロ活用)
サーバー上でコマンドを実行させつつ、Windows側でエラーを出さないための「Before Launch活用」構成です。
Laravel用の設定 (project laravel:8000)
- **
Shift+Alt+F10**→0で設定画面を開く。 - **
Alt+Insert**→ Shell Script を作成。 - 以下を設定:
-
Name:
project laravel:8000 -
Script text:
echo start(ダミー)
-
Before launch (
Alt+B) に以下の2つを登録し、順番をこの通りにします。 - Kill Port 8000 (手順1で作った設定を選択)
- Run Remote External Tool (新規作成)
-
Program:
php -
Arguments:
artisan serve --host=0.0.0.0 --port=8000 -
Working directory:
/var/www/html/$ProjectName$ - ※
$ProjectName$マクロを使うことで、フォルダ名を自動取得します。コピペ時に書き換え不要になります。
Vite用の設定 (project npm run dev)
同様に作成します。
-
Name:
project npm run dev -
Script text:
echo start - Before launch の順番:
- Kill Port 5173
- Run Remote External Tool
-
Program:
npm -
Arguments:
run dev -
Working directory:
/var/www/html/$ProjectName$
手順3:プロジェクト起動時に自動実行させる
作った設定を「スタートアップタスク」に登録します。
操作手順(キーボードのみ)
-
Altを押し、メニューバーにフォーカスしたらF(File) →T(Settings) の順に押す。(またはCtrl+Alt+S) - 左上の検索窓に
Startupと入力。 - 矢印キーで Startup Tasks を選び
Enter。 - **
Alt+Insert**(または+ボタン)を押し、作成したproject laravel:8000とproject npm run devを追加。 -
Enterで完了。
運用イメージ
- プロジェクトA (
idoldebut) を開く
- 自動でポート8000と5173を掃除 → サーバー起動。
- プロジェクトB (
renkatu) に切り替える
- PhpStormで「This Window」で開く。
- 起動した瞬間、まず「Kill Port 8000」が走り、前のプロジェクトAのゾンビプロセスを抹殺。
- その後、きれいな状態でプロジェクトBのサーバーが立ち上がる。
「ポートが埋まっています」というエラーを見ることは二度となくなります。
おまけ:他のプロジェクトへの移植方法
マクロ ($ProjectName$) を使っているので、移植は爆速です。
- 元のプロジェクトで **
Shift+Alt+F10**→0。 - 設定リストを選択して **
Ctrl+C**。 - 新しいプロジェクトを開き、同様に画面を開いて **
Ctrl+V**。 - あとは Startup Tasks に登録するだけ。
パスの書き換え不要で、全く同じ快適環境が構築できます。








