eclipseでPHPの開発環境を構築する
eclipseを使ってPHP開発を行う為の設定をしていきます
ブレークポイントを付けてソース上の好きなところで一時停止してデバッグできるようにします
PHPerでeclipseを使っている人は少数かと思いますが、参考までに
必要なものをダウンロードする
まずは必要なものをダウンロードしましょう
Javaのインストール
eclipseはJava上で動きます
下記からJavaをダウンロードします
https://jdk.java.net/archive
解凍します
環境変数作成
名前:JAVA_HOME 値:解凍してできたフォルダのパス
環境変数修正
名前:PATH 値:解凍してできたフォルダ内のbinフォルダを追記
これでJavaのインストールは完了です
xamppのインストール
下記からxamppをダウンロードします
https://sourceforge.net/projects/xampp/files/
インストールします
eclipseのインストール
下記からeclipseをダウンロードします
http://mergedoc.osdn.jp/
解凍します
Windowsの場合7-Zip https://sevenzip.osdn.jp/を使って解凍します。そうしないと、パス長制限によりフォルダ名、ファイル名が正しく解凍されません
設定をする
eclipseの設定
Java、xampp、eclipseをインストールしたら設定を行っていきましょう
eclipseを起動します
-
デバッガーにXdebugを選択し完了を押下
nginx、php-fpmを使っている人はphp-fpmのポートを9000でない値にするか、デバッガーのポートを9000でない値にするかどちらかにしてください。ポートはSELinuxで許可されているポートにしてください
-
webサーバーのポートフォワードを80でない値にしていたり、ホスト名を変えていたりする場合、ベースURLを変更してください→デバッガータブを押下
-
デバッガータブでXdebug選択→完了
nginx、php-fpmを使っている人はphp-fpmのポートを9000でない値にするか、デバッガーのポートを9000でない値にするかどちらかにしてください。ポートはSELinuxで許可されているポートにしてください
-
リモートセッションの受信でプロンプトを選択
nginx、php-fpmを使っている人はphp-fpmのポートを9000でない値にするか、デバッグポートを9000でない値にするかどちらかにしてください。ポートはSELinuxで許可されているポートにしてください
php.iniの設定
デバッグできるようにphp.iniを修正しましょう
nginx、php-fpmを使っている人はphp-fpmのポートを9000でない値にするか、xdebug.remote_portのポートを9000でない値にするかどちらかにしてください。ポートはSELinuxで許可されているポートにしてください
xdebugのバージョンが合わない場合、下記から適切なものを落としてきましょう
https://xdebug.org/download.php
windowsの場合
同一windows上でeclipseとphpを動作させている想定です
php.iniに下記を追記
XDebug2系の場合
[XDebug]
;php_xdebug.dllのパスはxamppをインストールしたフォルダによって変えてください
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_connect_back = 0
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
xdebug.remote_mode = "req"
xdebug.remote_port = 9000
xdebug.remote_autostart = 1
;xamppをインストールしたフォルダによって変えてください
xdebug.trace_output_dir = "C:\xampp\tmp"
XDebug3系の場合
[XDebug]
;php_xdebug.dllのパスはxamppをインストールしたフォルダによって変えてください
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.discover_client_host = false
xdebug.client_host = localhost
xdebug.client_port = 9000
xdebug.mode = debug
xdebug.start_with_request = yes
;xamppをインストールしたフォルダによって変えてください
xdebug.trace_output_dir = "C:\xampp\tmp"
vagrant、docker tool box、vagrant上にdockerをインストールしている場合
ホストOSでeclipseを動かしゲストOSでphpを動かしている想定です
vagrantやdockerコンテナ内のphp.iniに下記を追記してください
XDebug2系の場合
[XDebug]
;xdebug.soの場所が違う場合、変えてください
zend_extension = /usr/lib64/php/modules/xdebug.so
;dockerのphp:<version>-apacheイメージの場合下記にあると思います
;dockerのphp:<version>-apacheイメージにxdebugをインストールした場合、
;zend_extensionを書かなくてもdocker-php-ext-xdebug.iniが自動で作成されその中に
;zend_extensionが書かれていると思います
;zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
xdebug.remote_connect_back = 0
xdebug.remote_enable = 1
xdebug.remote_host = 10.0.2.2
xdebug.remote_port = 9000
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.remote_autostart = 1
XDebug3系の場合
[XDebug]
;xdebug.soの場所が違う場合、変えてください
zend_extension = /usr/lib64/php/modules/xdebug.so
;dockerのphp:<version>-apacheイメージの場合下記にあると思います
;dockerのphp:<version>-apacheイメージにxdebugをインストールした場合、
;zend_extensionを書かなくてもdocker-php-ext-xdebug.iniが自動で作成されその中に
;zend_extensionが書かれていると思います
;zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
xdebug.discover_client_host = false
xdebug.client_host = 10.0.2.2
xdebug.client_port = 9000
xdebug.mode = debug
xdebug.start_with_request = yes
Docker for Windows、Docker for Macの場合
ホストOSでeclipseを動かしゲストOSでphpを動かしている想定です
dockerコンテナ内のphp.iniに下記を追記してください
XDebug2系の場合
[XDebug]
;xdebug.soの場所が違う場合、変えてください
;dockerのphp:<version>-apacheイメージにxdebugをインストールした場合、
;zend_extensionを書かなくてもdocker-php-ext-xdebug.iniが自動で作成されその中に
;zend_extensionが書かれていると思います
;zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
xdebug.remote_connect_back = 0
xdebug.remote_enable = 1
xdebug.remote_host = host.docker.internal
xdebug.remote_port = 9000
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.remote_autostart = 1
XDebug3系の場合
[XDebug]
;xdebug.soの場所が違う場合、変えてください
;dockerのphp:<version>-apacheイメージにxdebugをインストールした場合、
;zend_extensionを書かなくてもdocker-php-ext-xdebug.iniが自動で作成されその中に
;zend_extensionが書かれていると思います
;zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
xdebug.discover_client_host = false
xdebug.client_host = host.docker.internal
xdebug.client_port = 9000
xdebug.mode = debug
xdebug.start_with_request = yes
動作確認
webサーバーを起動して、公開フォルダにphpファイルを置きましょう
公開フォルダに置いたphpファイルと同じディレクトリ・ファイル構成でphpファイルをeclipseのプロジェクトに配置します
eclipseのPHPプロジェクトはメニューバーのファイル→新規→プロジェクトで
新規プロジェクトウインドウを開き
PHP→PHPプロジェクトを選択→次へボタンクリック→プロジェクト名を入力し完了ボタンをクリックでできます
(PHPプロジェクトでないとブレークポイントで止まりません)
今回の動作確認ではtestという名前のPHPプロジェクト直下にindex.phpを置いてみます。webサーバーの公開フォルダにはtestフォルダを作成しその中に同じindex.phpを置きました
phpファイルを右クリック→デバック→PHP Web アプリケーションをクリック
入力可能なセレクトボックスがでますので、自分のwebサーバーのURLを入力しOKをクリック
これでPHPを実行できます
phpファイルの行番号をダブルクリックしてブレークポイントを付けていればそこで止まります
ブレークポイントを付けずに実行した方は、ブレークポイントを付けて、ブラウザを再読み込みしてみて下さい
ブレークポイントで止めるとその時点の変数の値が変数ビューで見れます。変数ビューの値の部分を書き換えれば、変数に好きな値を格納できます
eclipseでビューを表示する方法は、メニューバーのウインドウ→ビューの表示から好きなビューを表示できます。変数ビューが表示されていない人はそこから表示させてください
ブレークポイントで止めて、式ビューにPHPのワンライナーを書くと、その時点の変数の値を使用してワンライナーを実行できます
eclipseを使う上で絶対に覚えておきたいショートカット
(1) ctrl + shift + r : リソース検索(ファイル名検索し、開けます。ワイルドカード使用可)
(2) ctrl + k : 下に向かって検索(エディタ内で検索したい文字列を選択状態にしてctrl + k)
(3) ctrl + shift + k : 上に向かって検索(エディタ内で検索したい文字列を選択状態にしてctrl + shift + k)
(4) ctrl + o : メソッド検索(エディタ内でctrl + oでそのファイル内に定義されている関数を検索しそこへ移動できる。ワイルドカード使用可)
(5) F3 : 宣言を開く(関数をクリック(クリックしたら放していい。キャレットが関数部分にあればいい)し、F3を押すと、その関数が定義されている場所に移動できる)
エクスプローラーの双方向矢印アイコンをクリックし有効にするとエクスプローラーとエディタがリンクするようになります
PHP Webアプリケーションのところに先ほどのデバッグが入っているので、デバッグするファイルやURL、サーバーの変更をここでできます。
デバッグボタンをクリックすればデバッグが開始されます。
また、PHP Webアプリケーションをダブルクリックすると新しいデバッグの構成を作成できます
デバッグの構成へのショートカットとして虫アイコンがあり、
虫アイコンの右の▼をクリックすると、直近で実行したデバッグの構成が出てきます。
また、デバッグの構成をクリックすれば、先ほどのデバッグの構成の設定ウインドウが立ち上がります
次の記事
eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)