NetBeansでPuPHPet(Vagrant)+Xdebug

Vagrantにより親(windows)と子(仮想環境:linux)という関係で開発をしているわけだが、そうなるとPHPインタプリタ他諸々が親(windows)には入っていない。
NetBeansでXdebugを使うにはちょっとした準備が必要になる。

『NetBeans+PuPHPet(Vagrant)+Selenium』企画第1段。
NetBeansで仮想環境にリモートデバッグの設定していく。
Xdebug → PHPUnit → Selenium(※最終目標)

PuPHPet

puphpet/config.yaml

xdebug:
    install: '1'
    settings:
        xdebug.default_enable: '1'
        xdebug.remote_enable: '1'
        xdebug.remote_host: '192.168.33.1'   ←※REMOTE_ADDRの値
        xdebug.remote_port: '9000'   ←変えても良い
        xdebug.remote_handler: dbgp
        xdebug.remote_autostart: '1'
        xdebug.remote_mode: 'req'
        xdebug.remote_connect_back: '1'
        xdebug.remote_log: "/tmp/xdebug.log"   ←※設定すると接続結果見れて便利。場所は不問。
        xdebug.profiler_enable: 1
        xdebug.profiler_output_dir: "/tmp"
        xdebug.max_nesting_level: 1000   ←※他のサイトに書いてたから
        xdebug.idekey: 'xdebug-user'   ←NetBeans専用なら『netbeans-xdebug』でOK
        xdebug.output_buffering: '0'

『※』部分は書かなくても良いかもしれない。
『zend_extension』の設定はPuPHPetが勝手にやってくれる。
設定したら『vagrant up』して起動。

起動したら『vagrant ssh-config』実行し結果をメモ。
config.yamlのvagrantfile: vm: provider: local: machines: id:に設定されたものがHostに書かれたものが出て来る。

NetBeans

NetBeansメニュー → ツール → オプション → PHP → デバッグ にて

  • デバッガ・ポート:config.yamlの『xdebug.remote_port』
  • セッションID:config.yamlの『xdebug.idekey』

プロジェクトを右クリック → プロパティ → 実行方法 にて

  • 実行方法:リモートWebサイト(FTP、SFTP)
  • プロジェクトURL:ブラウザで表示するURL
  • ファイルのアップロード:手動

『リモート接続の管理』を押す

リモート接続の管理

  • ホスト名:ssh-configで出た『HostName』
  • ポート:ssh-configで出た『Port』
  • ユーザ:ssh-configで出た『User』
  • 初期ディレクトリ:仮想環境(Linux)側のプロジェクトのルート

あとは
パスワード設定していたら『パスワード』を入力し、していないなら『秘密鍵ファイル』を設定すればOK。
鍵は『C:/Users/【windowsのユーザ名】/.vagrant.d/insecure_private_key』にある。
そして『接続をテスト』を押して、接続できればOK

Windowsファイアウォール受信規則追加

『セキュリティが強化された Windows ファイアウォール』を起動
cortanaに聞けばすぐ出てくる。
『受信の規則』を選択。

『新しい規則...』を作ることをオススメするが、『NetBeans IDE』の設定が有効になってないなら、それ書き換えちゃえばいいと思う。

  • 全般 → 全般 → 『有効』にチェック
  • 全般 → 操作 → 接続を許可する
  • 詳細設定 → プロファイル → 『パブリック』のみチェックに
  • プロトコルおよびポート → プロトコルの種類 → 『TCP』選択
  • ローカルポート → 特定のポート → config.yamlの『xdebug.remote_port』
  • リモートポート → すべてのポート

しなくてもいいが、IPを限定したいなら
スコープ→リモートIPアドレス→これらのIPアドレス→追加→このIPアドレスまたはサブネット
『192.168.33.0/24』または『REMOTE_ADDRの値』を入力する。

新規に作る場合は

  • 規則の種類:プログラム
  • プログラム:NetBeansの実行ファイル
  • 操作:接続を許可する

あとは書き換える版と同じ
名前は自分がわかりやすければ、それでいいかと。

試してみる

NetBeansで何かテキトーに打ち込んだphpファイルを作る。
ソースの好きなとこで、右クリックからブレークポイントを作成。
プロジェクトウィンドウで、作成したファイルを右クリックから『デバッグ』
※ここで『外部ブラウザで、このURLにアクセス出来ませんでした。』とか出ても無視しても大丈夫。
 イヤなら『NetBeansメニュー → ツール → オプション → 一般』にて『Webブラウザ』を『デフォルトのシステム・ブラウザ』から他のブラウザに変更。

  • ブラウザで該当ページを見る
  • 『vagrant ssh』して該当を『php xxx.php』とコマンド実行

すると接続がスタートされて、ブレークポイントで処理が止まり、NetBeansにウィンドウ出て結果出る

これだけを調査・設定するだけで2日かかった…
皆PhpStormが大好きでNetBeansの情報が埋もれて探すの大変…
しかもまとめるのに更に1日かけてしまった…何でだよ…

参照:NetBeans リモートからのPHPプロジェクト作成とデバッグ | junichi11.com

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です