以前の開発環境では、PHPファイルの編集はPHPEclipse、CTPファイルやビューファイル*1 はDreamweaverを使用しており、リモート環境へのアップロードは使い慣れていたDreamweaverを利用していました。
Zen Codingの使い勝手の良さや優秀なコード補完のお陰で、PHPファイルだけではなくビューファイル*2 もPhpStormで編集できるようになったので、アップロードもPhpStormから行うようになったのですが、これがまた大変優秀です。
まず素晴らしいのは、サーバ同期機能です。
専用のダイアログが開き、どのファイルがリモートファイルと異なるのかディレクトリ構造が把握できる形で一覧化してくれます。
そして更に嬉しいのは、ファイルを選択するとローカルとリモートファイルのdiffを下のビュアーに表示してくれるところです。
Dreamweaver(CS3)の同期機能では、右クリックから外部アプリケーションを利用してDiffを確認することはできましたが、右クリック->メニュー選択->diffアプリケーション起動という操作も面倒で、複数のファイルのdiffを確認するのには向いていませんでした。
それと、バグなのかディレクトリの深いところにあるファイル*3 を編集しても、同期対象としてリストアップされないことがあるという問題もありました。
PhpStormでアップロードするようになって、これらの問題から解消されたのでアップロード作業の効率が大変良くなりました。
次はFTPアップロードの設定を解説します。
PhpStormのFTP設定
-
メインメニュー->Tools->Deployment->Configuration…を選択してDeploymentダイアログを開く。
-
[+]ボタンをクリックして、Add Serverダイアログに適当な名前(Name)とType(ここではFTP)を選択してOKボタンを押します。
-
Deploymentダイアログに今名前をつけた設定画面が開くので、必要な情報を埋めます。
passiveモードの設定などは「Advanced options…」ボタンの先にあります。 -
次に「Connection」タブから「Mappings」タブに移動して、LocalパスとDeploymentパス、Webパスを関連付けます。
Local pathにはローカルのプロジェクトフォルダのパスを、Deploymentパスにはプロジェクトファイルをアップロードするパスを先程設定したRootパス以下から指定、Webパスには先程設定したWeb server root URL以下のパスを設定します。例えばRootパスが/var/wwwでhogeプロジェクトのアップロード先が/var/www/hogeならば、Deploymentパスには/hogeのみ入力します。
Webパスも同様にWeb server root URLがhttp://www.hoge.comで、実際のURLも同じhttp://www.hoge.com/ならWebパスには/のみ入力すればOKです。 -
最後に「Excluded Paths」タブですが、これはアップロードの対象外とするパスを設定することができます。例えばCakePHPなら/app/tmpなどはアップロードの対象外にしたいので、ここに加えます。
Add local pathボタンをクリックすると行が追加されますので、右はじの参照ボタンからアップロードの対象外のディレクトリを指定すればOKです。
これでFTPアップロードの準備ができました。
プロジェクトメニューのルート*4 をクリックした状態でメインメニューのTools->DeploymentをクリックしてUpload to…などのアップロードメニューがクリックできる状態になっていれば正しく設定されているということです。
もし、グレーアウトされていてクリックできない場合は設定に不備があります。その際はDeploymentダイアログにエラーが表示されているはずですので、エラーを読んで足りない部分を修正してください。
アップロード
PhpStormのアップロード、ダウンロードメニューは全部で4種類あります。
- デフォルトサーバにアップロードするUpload to [デフォルトサーバ名]
- サーバを選択してアップロードするUpload to…
- サーバからローカルにファイルをダウンロードするDownload from [デフォルトサーバ名]
- Sync with Deployed Version on [デフォルトサーバ名]
プロジェクトの最初のアップロードの際には1番目の全体アップロードを使いますが、その後はSync with…(同期)を利用することになるでしょう。
Sync with…
アップロードメニューの「Sync with Deployed Version on [デフォルトサーバ名]」を選択すると、Diff Between [ローカルパス] and [リモートパス]のダイアログが開きます。
開いてからしばらくはリモートパスを読み込んで、ローカルのファイルと比較するので少し時間がかかります。
読み込みが終わると、ローカルとリモートで内容が異なるファイルが一覧に表示されます。
一覧からファイルを選んで右クリックすると、メニューが表示されます。
アップロードするときはSet Copy to Right(左のローカルファイルを右のリモートファイルへコピー)、ダウンロードするときはSet Copy to Left、リモートファイルを削除するときはSet Delete*5 を選択します。デフォルトで≠のアイコンをクリックしても切り替えることができます。
まとめてアップロードしたい時は、Ctrl+Aで複数ファイルを選択して右クリックメニューからメニューを選択することも可能です。
左上の同期アイコン(Refresh)かF5で最新の状態に更新できるので、開発中はこのダイアログを開いたままにして、適時アップロードを行なってもいいかもしれませんね。
なんといってもDiffを取りながらアップロードするファイルを選択でき、ファイルのパスが表示されるので、アップロードに関するミスがかなり減らせるのがとても有難いですね。
- HTMLを記述する場合 [↩]
- ビューファイルもPHPファイルですが、HTMLの記述のアルファ居るという意味で [↩]
- 条件はわからないのですが、CakePHPならwebroot/cssの中のファイルなどは編集しても/app以下を同期しようとしてもリストに出てこず、/app/webroot以下で同期を取ると出てきたりしました [↩]
- プロジェクトのディレクトリツリーの一番最初のディレクトリ名 [↩]
Set Deleteで削除だと思うんですが選択できないんですよね。何か条件があるのかもローカルファイルが存在しているリモートファイルは削除できないようです。リモートファイルはあるのにローカルファイルはすでに削除されている場合のみSet Deleteが選択できます。 [↩]